如何表达有时在rails中有一个关系

时间:2013-02-12 07:56:15

标签: ruby-on-rails ruby model

当我们在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 答案之间的关系。

2 个答案:

答案 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