2014-12-30 2 views
5

Вопросы has_many question_tags.Использование большего или меньшего, чем в случае запроса активной записи Rails

Как я могу получить все вопросы что:

  1. Есть QUESTION_TAG с именем "JavaScript"
  2. не ответили
  3. Есть более чем 2 "vote_count"?

Вот таблицы:

Questions 
    is_answered:boolean 
    vote_count:integer 

QuestionTags 
    name:string 
    question_id:integer 

Это запрос у меня есть до сих пор. Это №1 и №2. Как я могу сделать # 3?

Question.joins(:question_tags).where(question_tags: {name: "javascript"}, question: {is_answered: false}) 

ответ

3

Это выглядит как дубликат this question. То, что вы хотите, это синтаксис строки или массива для where.

Question.joins(:question_tags).where(question_tags: {name: "javascript"}, is_answered: false).where(["#{Question.table_name}.vote_count > ?", 2]) 

Обновлено, чтобы включить имя таблицы в последнем месте where.

+0

В разделе «where vote_count», как я могу сделать это в таблице «jobs»? Я не мог понять, как использовать этот синтаксис с запросом join(), поэтому он не является дубликатом. –

+0

Предположим, вы имеете в виду таблицу «Вопросы»: '.where ([" # {Question.table_name} .vote_count>? ", 2])'. Если вы действительно имеете в виду задания, тогда при получении имени таблицы введите 'Job' вместо' Question'. – Coenwulf