gpt4 book ai didi

mysql - Rails 关联使用 'model' .'model_id' 而不是 'model' .'id' 触发 SQL where 子句

转载 作者:行者123 更新时间:2023-11-29 11:10:01 24 4
gpt4 key购买 nike

在我的卡片模型中,我有以下关联:

has_many :sub_cards, ->(obj) { where('parent_card_id = ?', obj.id) },
inverse_of: :parent_card, :class_name => 'Card'
belongs_to :parent_card, class_name: 'Card', optional: true

每当我尝试使用它们时,例如在控制台中输入 c.sub_cards 时,我都会收到以下错误:

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'cards.card_id' in 'where clause': SELECT cards.* FROM cards WHERE cards.card_id = 237 AND (parent_card_id = 237)

事实上,SQL 请求有 'cards'.'card_id' = some,而如果我引用的话,它应该是 'cards'.'id' = some给我的其他工作协会。问题是我找不到这个语法的来源。

有人遇到过这个问题吗?

预先感谢您的帮助。

最佳答案

您可以通过传递 :foreign_key => "some_attribute_id" 来指定哪个属性是关系的外键。希望这可以帮助。祝你好运!

编辑:

不知道这是否适合你,但我会这样写:

has_many :sub_cards, ->(obj) { where('parent_card_id = ?', obj.id) },
inverse_of: :parent_card, :class_name => 'Card', foreign_key: 'parent_card_id'
belongs_to :parent_card, class_name: 'Card', foreign_key: "parent_card_id", optional: true

我想你可以尝试一下这个,或者类似的东西。再次祝你好运!

关于mysql - Rails 关联使用 'model' .'model_id' 而不是 'model' .'id' 触发 SQL where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40771040/

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