Schienen : was ist falsch mit dieser mehrere join-Bedingungen auf die Vereine?

Hier sind meine Modelle:

class Deck < ActiveRecord::Base
  belongs_to :game
  has_many :deck_cards
end

class DeckCard < ActiveRecord::Base
  belongs_to :card
  belongs_to :deck
end

class Card < ActiveRecord::Base
end

Hier mein versuchter finden:

DeckCard.all :joins => [:card, :deck], :conditions => {{:decks => {:game_id => @game.id}}, {:cards => {:present => true}}}

Ich erhalte die Fehlermeldung : Undefinierte Methode für all für #Klasse:0x4b2a98>. Ich gehe davon aus das ist ein irreführender Fehler analysiert meine Bedingungen. Ich bin nach der Anleitung für Active-Record-Abfrage. Ich war mir nicht sicher, ob Sie die singular-oder Pluralform des Vereins. Aussehen mit einer belongs_to, Sie soll die Verwendung der singular-form, in der :joins hash, aber ich war nicht sicher, in der :Bedingungen-hash, also versuchte ich, beides und weder gearbeitet.

Im Fall es ist nicht klar, was ich versuche zu tun, in SQL ist:

SELECT * from DeckCards  
INNER JOIN decks on decks.id = deck_cards.deck_id  
INNER JOIN cards on card.id = deck_cards.card_id  
WHERE decks.game_id = 4  
AND cards.present = true

Ich bin in der Lage zu bekommen, um es jetzt durch die Verwendung DeckCard.find_by_sql, aber es wäre schön, herauszufinden, warum die Verknüpfungen und Bedingungen auf Verbände nicht funktioniert.

Ich bin mit InstantRails-2.0 auf windows, die mit Rails 2.0.2

Bearbeitet : einige Fortschritte mit DeckCard.find(:all ...) statt. Ich bearbeitete auch die Klammern auf der Basis einer anderen Antwort. Meine Letzte code ist

DeckCard.find :all, :joins => [:card, :deck], :conditions => {:deck => {:game_id => @game.id}, :cards => {:present => true}}  

welche produziert den folgenden Fehler:

Unknown column 'deck_cards.decks' in 'where clause': SELECT `deck_cards`.* FROM `deck_cards`   INNER JOIN `cards` ON `cards`.id = `deck_cards`.card_id  INNER JOIN `decks` ON `decks`.id = `deck_cards`.deck_id  WHERE (`deck_cards`.`decks` = '--- \n- :game_id\n- 5\n' AND `deck_cards`.`cards` = '--- \n- :present\n- true\n')  

Die Verknüpfungen korrekt angezeigt, aber nicht die, WO die Bedingungen. Ich habe versucht ein paar verschiedene Dinge wie :deck oder :decks in den AGB-Klausel, aber kein Glück. Ein weiterer Unterschied zwischen dem aktuellen ActiveRecord-Abfrage-Schnittstelle docs und wie die Bedingungen sind in 2.0.2?

Dank!

Diese noch fällt mir da ein syntax-Fehler, da Sie selbst nicht identifizieren die Klasse DeckCard von Namen. Können Sie nach dem umliegenden Methode für die DeckCard.alle line?
Siehe meine aktualisierte Antwort für einen anderen Vorschlag.

InformationsquelleAutor user26270 | 2009-03-09

Schreibe einen Kommentar