在我的卡片模型中,我有以下关联:
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 'where子句'中的'cards.card_id':SELECT
cards
。* FROMcards
WHEREcards
。card_id
= 237 AND(parent_card_id = 237)
实际上,SQL请求有'cards'.'card_id' = something
,如果我引用其他工作关联,它应该是'cards'.'id' = something
。
问题是我无法找到这种语法的来源。
有人遇到过这个问题吗?
提前感谢您的帮助。
答案 0 :(得分:1)
您可以通过传递: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
我认为你可以尝试一下,或接近它。祝你好运!