gpt4 book ai didi

ruby-on-rails - rails : what's wrong with this multiple join with conditions on the associations?

转载 作者:数据小太阳 更新时间:2023-10-29 07:51:31 26 4
gpt4 key购买 nike

这是我的模型:

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 指南。我不确定是使用单数形式还是复数形式的关联。看起来像 belongs_to,你应该在 :joins 散列中使用单数形式,但我不确定在 :conditions 散列中,所以我都试过了,但都没有用。

如果不清楚,我在 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 来解决这个问题,但如果能弄清楚为什么关联的连接和条件不起作用会更好。

我在 Windows 上使用 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 但没有成功。这可能是当前 ActiveRecord 查询接口(interface)文档与 2.0.2 中如何完成条件之间的另一个区别吗?

谢谢!

最佳答案

您需要完成与卡片模型的关联:

class Card < ActiveRecord::Base
has_many :deck_cards
end

编辑 2:试试这个:

 DeckCard.find :all, :joins => [:card, :deck], :conditions => ["decks.game_id = ? and cards.present = ?", @game.id, true]

关于ruby-on-rails - rails : what's wrong with this multiple join with conditions on the associations?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/628000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com