我有Question.rb(has_one:answer)和Answer.rb(belongs_to:question)。
我想在视图中输出未回答问题的数量。我认为它会是这样的:
Question.where(answer.blank?)
或
Question.notJoin(:answers)
我知道我的语法已经过时了,我不太确定这是模型范围还是控制器实例变量,但我不明白为什么这对我来说不容易用铁轨完成。
有人能指出我在这里正确的方向 - 我真的很感激。
答案 0 :(得分:2)
您可以在left join
和questions
之间使用answers
,如下所示:
Question.joins(
'left join answers on questions.id = answers.question_id'
).where(answer: { id: nil })
这会给你所有没有答案的问题。
您可以将此查询放在作用域或类方法中,或在方法中使用它。这真的是你的选择。
答案 1 :(得分:1)
您还可以向问题添加答案计数器缓存,然后根据该选项进行选择。
class Answer < ActiveRecord::Base
belongs_to :question, :counter_cache => true
然后将范围添加到问题
scope :no_answers, -> { where(:answers_count => 0) }
然后它读起来很棒
Question.no_answers