题
我有一个Rails应用程序,我在设计过程中来的。我有一个需要链接到只有一个2模型一个单独的模型。具体地讲,我的“评价” S具有2“构件” S,评价者和评价者。他们也有一些其它信息,太多,但他们不应该是相关的这一点。
什么是代表最好的方法?将在评估2个外键是最好的,或者评估和成员之间的多对多的关系?会不会有,将工作更好一些其他的选择吗?
我最初认为多对多的,但由于存在该关系的一侧所定义的数我这里质疑的适用性。据我所知,多到许多通常意味着该关系的每一侧上的数量是可变的。
解决方案
您可能需要两个不同的协会,可能与同一类:
class Member < ActiveRecord::Base
has_many :evaluations_out, :class_name => 'evaluation', :as => :evaluator
has_many :evaluations_in, :class_name => 'evaluation', :as => :evaluatee
end
class Evaluation < ActiveRecord::Base
belongs_to :evaluator, :class_name => 'member'
belongs_to :evaluatee, :class_name => 'member'
end
其他提示
我没有测试它自己,它可能听起来有点冒险,但我认为可以工作:
<强>评价模型强>
class Evaluation < ActiveRecord::Base
belongs_to :evaluator, :class_name => "Member", :foreign_key => "evaluator_id"
belongs_to :evaluatee, :class_name => "Member", :foreign_key => "evaluatee_id"
end
<强>会员模型强>
class Member < ActiveRecord::Base
has_many :evaluators, :class_name => "Evaluation", :foreign_key => "evaluator_id"
has_many :evaluatees, :class_name => "Evaluation", :foreign_key => "evaluatee_id"
end
不隶属于 StackOverflow