1

設計中のRailsアプリケーションがあります。1つのモデルのうち2つだけにリンクする必要がある別のモデルがあります。具体的には、私の「評価」には、2人の「メンバー」、評価者、および評価者がいます。他にもいくつかの情報がありますが、これに関連するものではありません。

これを表す最良の方法は何ですか?評価における2つの外部キーが最適でしょうか、それとも評価とメンバー間の多くの関係が最適でしょうか?さらにうまく機能する他のオプションはありますか?

最初は多対多だと思いますが、関係の片側に定義された数があるので、ここでの適用性に疑問を持っています。私の知る限り、多対多は一般に、関係の両側の数が可変であることを意味します。

4

2 に答える 2

1

おそらく同じクラスで、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
于 2009-02-23T20:52:08.710 に答える
0

私はそれを自分でテストしていないので、少し冒険的に聞こえるかもしれませんが、うまくいくと思います:

評価モデル

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
于 2009-02-23T21:00:03.013 に答える