当我们在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
但有时,问题没有最佳答案(例如:没有提供答案)
我的问题是如何表达问题 BEST 答案之间的关系。
答案 0 :(得分: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
答案 1 :(得分:1)
有点多余的解决方案,但如果您需要使用标准rails关系DSL实现(0..1)
多重性,则可以使用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