2014-12-30 10 views
5

Fragen have_many Fragezeichen.Verwendung von größer als oder weniger als in einer Rails Active Record-Abfrage

Wie kann ich alle Fragen erhalten dass:

  1. Haben Sie einen QUESTION_TAG mit dem Namen "javascript"
  2. nicht
  3. mehr geantwortet haben: Sind als 2 "vote_count"?

Hier sind die Tabellen:

Questions 
    is_answered:boolean 
    vote_count:integer 

QuestionTags 
    name:string 
    question_id:integer 

Dies ist die Abfrage, die ich bis jetzt haben. Es tut # 1 und # 2. Wie kann ich # 3 tun?

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

Antwort

3

Das sieht wie ein Duplikat this question. Was Sie wollen, ist die String- oder Array-Syntax für where.

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

Aktualisiert, um den Tabellennamen in die letzte Where-Klausel aufzunehmen.

+0

Für die "wo vote_count" -Klausel, wie kann ich es ausdrücklich auf die Tabelle "Jobs" machen? Ich konnte nicht herausfinden, wie man diese Syntax mit der Joins() - Abfrage verwendet, weshalb es kein Duplikat ist. –

+0

Ich nehme an, Sie meinen die Tabelle der Fragen: '.where ([" # {Question.table_name} .vote_count>? ", 2])'. Wenn Sie wirklich Jobs meinen, dann setzen Sie 'Job' anstelle von' Frage', wenn Sie den Tabellenname bekommen. – Coenwulf

Verwandte Themen