Вот мои модели:
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
Вот моя попытка найти:
DeckCard.all :joins => [:card, :deck], :conditions => {{:decks => {:game_id => @game.id}}, {:cards => {:present => true}}}
Я получаю сообщение об ошибке: неопределенный метод для all
для #Class: 0x4b2a98>. Я предполагаю, что это вводящая в заблуждение ошибка при разборе моих условий. Я следую руководству по Active Record Query. Я не был уверен, использовать ли единственную или множественную форму ассоциаций. Похоже, что с принадлежащим вам, вы должны использовать единственную форму в хеше: joins, но я не был уверен в хэше: условий, поэтому я пробовал оба, но ни один из них не работал.
На случай, если неясно, что я пытаюсь сделать в SQL:
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
Сейчас я могу обойти это, используя DeckCard.find_by_sql
, но было бы неплохо выяснить, почему не работают объединения и условия для ассоциаций.
Я использую InstantRails-2.0 на Windows, которая использует Rails 2.0.2
Отредактировано: некоторый прогресс с использованием DeckCard.find(:all ...)
вместо. Я также отредактировал скобки на основе другого ответа. Мой последний код
DeckCard.find :all, :joins => [:card, :deck], :conditions => {:deck => {:game_id => @game.id}, :cards => {:present => true}}
, которая выдает следующую ошибку:
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')
Соединения отображаются правильно, но не ГДЕ условия. Я пробовал несколько разных вещей, таких как :deck
или :decks
в условии условия, но не повезло. Может ли это быть еще одним различием между текущими документами интерфейса ActiveRecord Query Interface и тем, как выполняются условия в 2.0.2?
Спасибо!