我有一个正在设计的 Rails 应用程序。我有一个单独的模型,只需要链接到一个模型中的两个。具体来说,我的“评估”有 2 个“成员”,一个评估者和一个评估者。他们也有一些其他的信息,但它们不应该与此相关。
代表这一点的最佳方式是什么?评估中的 2 个外键是最好的,还是评估和成员之间的多对多关系?是否有其他选择会更好?
我最初会考虑多对多,但由于关系的一侧有一个定义的数字,我质疑这里的适用性。据我所知,多对多通常意味着关系每一侧的数字是可变的。
我有一个正在设计的 Rails 应用程序。我有一个单独的模型,只需要链接到一个模型中的两个。具体来说,我的“评估”有 2 个“成员”,一个评估者和一个评估者。他们也有一些其他的信息,但它们不应该与此相关。
代表这一点的最佳方式是什么?评估中的 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