Here are my models:
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
Here’s my attempted find:
DeckCard.all :joins => [:card, :deck], :conditions => {{:decks => {:game_id => @game.id}}, {:cards => {:present => true}}}
I keep getting the error : undefined method for all for #Class:0x4b2a98>. I’m assuming this is a misleading error from parsing my conditions. I’m following the guide for Active Record Query. I wasn’t sure about whether to use the singular or plural form of the associations. Look like with a belongs_to, you’re supposed to use singular form in the :joins hash, but I wasn’t sure in the :conditions hash, so I tried both and neither worked.
In case it isn’t clear, what I’m trying to do in SQL is:
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
I’m able to get around it for now by using DeckCard.find_by_sql, but it would be nice to figure out why the joins and conditions on associations isn’t working.
I’m using InstantRails-2.0 on windows, which is using Rails 2.0.2
Edited : some progress using DeckCard.find(:all ...) instead. I also edited the brackets based on another answer. My latest code is
DeckCard.find :all, :joins => [:card, :deck], :conditions => {:deck => {:game_id => @game.id}, :cards => {:present => true}}
which is producing the following error:
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')
The joins appear correct but not the WHERE conditions. I’ve tried a few different things like :deck or :decks in the conditions clause but no luck. Could this be another difference between the current ActiveRecord Query Interface docs and how conditions are done in 2.0.2?
Thanks!
You need to complete your association with the Card model:
EDIT 2: Try this: