我有一个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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top