X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/960d13488a875245570ee498ee9a1ed7cac37bbe..78db9e72bb3653ee8c666f5d10a231aecad9d984:/app/models/relation_member.rb diff --git a/app/models/relation_member.rb b/app/models/relation_member.rb index 9ff4f46f3..389e2ce52 100644 --- a/app/models/relation_member.rb +++ b/app/models/relation_member.rb @@ -1,23 +1,26 @@ class RelationMember < ActiveRecord::Base - set_table_name 'current_relation_members' - - belongs_to :member, :polymorphic => true, :foreign_type => :member_class - belongs_to :relation, :foreign_key => :id + set_table_name 'current_relation_members' + set_primary_keys :relation_id, :sequence_id - def after_find - self[:member_class] = self.member_type.capitalize - end + belongs_to :relation + belongs_to :member, :polymorphic => true - def after_initialize - self[:member_class] = self.member_type.capitalize - end - - def before_save - self.member_type = self[:member_class].downcase - end + after_find :set_class_from_type + after_initialize :set_class_from_type + before_save :set_type_from_class def member_type=(type) self[:member_type] = type self[:member_class] = type.capitalize end + +private + + def set_class_from_type + self[:member_class] = self.member_type.classify unless self.member_type.nil? + end + + def set_type_from_class + self.member_type = self[:member_class].classify + end end