Вот мои модели:
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}}}
Я продолжаю получать ошибку: undefined метод для all
для #Class: 0x4b2a98 > . Я предполагаю, что это ошибочная ошибка при анализе моих условий. Я следую инструкциям для запроса активной записи. Я не был уверен в том, следует ли использовать единственную или множественную форму ассоциаций. Похоже, что с помощью sort_to вы должны использовать единственную форму в хэше: 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 для окон, использующих 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')
Соединения отображаются корректно, но не условия WHERE. Я пробовал несколько разных вещей, таких как :deck
или :decks
в условии условий, но не повезло. Может ли это быть другой разницей между текущими документами API запросов ActiveRecord и тем, как условия выполняются в версии 2.0.2?
Спасибо!