我有一个QuestionCategory模型,他有很多问题。
当我执行此查询时@quizzs = QuestionsCategory.find(:all)
一切正常。它正在查询所有的灾难和相关问题:
QuestionsCategory Load (0.2ms) SELECT `questions_categories`.* FROM `questions_categories`
Question Load (0.3ms) SELECT `questions`.* FROM `questions` WHERE `questions`.`questions_category_id` = 1
Question Load (0.4ms) SELECT `questions`.* FROM `questions` WHERE `questions`.`questions_category_id` = 2
Question Load (0.3ms) SELECT `questions`.* FROM `questions` WHERE `questions`.`questions_category_id` = 3
但是,我想将条件传递给问题子查询。就像是
@quizzs = QuestionsCategory.find(:all, :questions => [ :conditions => {MY CONDITIONS} ])
然后让子查询看起来像这样:
选择问题。* FROM问题WHERE questions.questions_category_id = 2 AND MY CONDITIONS
可能? 干杯伙伴
答案 0 :(得分:0)
要获得SQL
(SELECT questions.* FROM questions WHERE questions.questions_category_id = 2 AND MY CONDITIONS
)的结果,您可以执行以下操作:
QuetionsCategory.find(2).questions.all(:conditions => [Your conditions])
答案 1 :(得分:0)
范围怎么样?
问题类别控制器:
def your_action_name
@quizzs = QuestionsCategory.all.collect{|qc| qc.questions.published == true}
问题模型:
class Question < ActiveRecord::Base
scope :published, where(:published => true)
end
通过这种方式,您可以将要应用的所有范围(条件)链接到Question
答案 2 :(得分:0)
您需要默认范围在您的模型中。
将此问题放入您的QuestionCategory模型。
default_scope joins(:questions).where(conditions)
然后
QuestionCategory.all应该给你预期的结果。