【发布时间】:2012-09-27 15:39:42
【问题描述】:
class QuestionGroup < ActiveRecord::Base
has_many :questions
end
class Question < ActiveRecord::Base
belongs_to :question_group
has_many :question_answers
has_many :question_users_answers, :through => :question_answers, :source => :user_question_answers
def self.questions_without_answers(user_id)
select {|q| q.question_users_answers.where(:user_id=>user_id).empty?}
end
end
class QuestionAnswer < ActiveRecord::Base
belongs_to :question
has_many :user_question_answers
end
如果没有用户回答,我需要找到所有问题我通过类方法 self.questions_without_answers(user_id)
但是,我如何才能找到所有存在 questions_without_answers 并针对特定用户的 QuestionGroups?
P.S:我需要找到所有未回答的问题以及拥有这些问题的所有组,我可以通过 find 或 named-scope 来完成吗?
更新:
def self.groups_without_answers(user_id)
questions_ids = Question.questions_without_answers(user_id).map {|q| q.id}
all(:conditions => "id in (select distinct question_group_id from questions where id in (#{questions_ids.join(',')}))")
end
但我认为这不好还是我错了?
【问题讨论】:
标签: ruby-on-rails ruby find associations named-scope