]> git.openstreetmap.org Git - rails.git/blobdiff - app/models/relation_member.rb
Require user names and emails to be case insensitively unique
[rails.git] / app / models / relation_member.rb
index f3033d1c641494225b15dc77ac108ee623866249..389e2ce5234cded24bba7548a567e6b7b9dee124 100644 (file)
@@ -1,24 +1,26 @@
 class RelationMember < ActiveRecord::Base
-  set_table_name 'current_relation_members'
-  
-  set_primary_keys :id, :sequence_id
-  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 unless self.member_type.nil?
-  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