2

stackoverflowで質問し、誰かがあなたの質問に答えると、モデルの関係は次のようになります。

class Question < ActiveRecord::Base
  has_many :answers
end

class Answer < ActiveRecord::Base
  belongs_to :question
end

あなたはあなたの質問の最良の答えとして一つの答えを取ります、そして関係は

class Question
  has_one answer (the best one)
end

しかし、時々、質問は最良の答えではありません(例えば:答えは提供されません)

私の質問は、質問とベストアンサーの関係をどのように表現するかです。

4

2 に答える 2

2
$> rails g migration add_best_to_answers best:boolean

> a = Answer.first
> a.best = true
> a.save
> q = a.question 
> q.a.best? # => true
于 2013-02-12T08:03:10.480 に答える
1

少し余分な解決策ですが、(0..1)標準の Rails リレーションシップ DSL で多重度を実装する必要がある場合は、throughリレーションを使用できます。

class Question < ActiveRecord::Base
  has_many :answers
  has_one  :answer, :through => :bestanswers
end

class Answer < ActiveRecord::Base
  belongs_to :question
  has_one :bestanswer
end

class BestAnswer < Answer
  belongs_to :answer
  belongs_to :question
end
于 2013-02-12T08:27:17.380 に答える