2014-12-30 8 views
5

domande have_many question_tags.Utilizzo maggiore o minore di una query record di record di apertura

Come posso ottenere tutte le domande che:

  1. Avere un QUESTION_TAG con il nome di "javascript"
  2. non trovano risposta
  3. hanno più di 2 "vote_count"?

Qui ci sono le tabelle:

Questions 
    is_answered:boolean 
    vote_count:integer 

QuestionTags 
    name:string 
    question_id:integer 

Questa è la query che ho finora. Fa # 1 e # 2. Come posso fare # 3?

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

risposta

3

Questo appare come un duplicato di this question. Quello che vuoi è la sintassi stringa o array per where.

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

Aggiornato per includere il nome della tabella nell'ultima clausola where.

+0

Per la clausola "where vote_count", come posso specificarlo sulla tabella "jobs"? Non riuscivo a capire come usare quella sintassi con la query joins(), che è il motivo per cui non è un duplicato. –

+0

Immagino tu intenda la tabella delle domande: '.where ([" # {Question.table_name} .vote_count>? ", 2])'. Se si intende realmente un lavoro, inserire 'Job' invece di' Question' quando si ottiene table_name. – Coenwulf