1

多くの質問がある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} ])

次に、次のようなサブクエリを取得します。

SELECT質問。*FROM質問WHEREquestions.questions_category_id=2AND MY CONDITIONS

可能?乾杯仲間

4

3 に答える 3

0

SQL( )の結果を取得するにSELECT questions.* FROM questions WHERE questions.questions_category_id = 2 AND MY CONDITIONSは、次のようにします。

  QuetionsCategory.find(2).questions.all(:conditions => [Your conditions])
于 2013-02-21T14:37:04.457 に答える
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

于 2013-02-21T15:23:02.940 に答える
0

モデルにデフォルトのスコープが必要です。

これを QuestionCategory モデルに入れます。

default_scope joins(:questions).where(conditions)

それで

QuestionCategory.all 期待どおりの結果が得られるはずです。

于 2013-02-21T15:29:31.267 に答える