我有一个模型Product
,我想在这两个字段channel_advisor_product_id
,parent_product_id
上实现自我关联。但是,当我致电Product.last.child_products
时,它会使用id
代替parent_product_id
belongs_to :parent_product, class_name: 'Product', primary_key: "channel_advisor_product_id"
has_many :child_products, class_name: 'Product', foreign_key: "parent_product_id"
答案 0 :(得分:1)
您使用的是rails console吗?
如果“是”再次键入exit和“rails c”,则在控制台中输入:
Product.last.child_products
您将看到查询是否使用“ id ”或“ parent_product_id ”。
答案 1 :(得分:0)
基本上,通过添加primary_key
和foreign_key
来解决问题
关联parent
和children
。现在,id被排除在外,self association
对我提供的列工作正常。
belongs_to:parent,class_name:' Product',primary_key: " channel_advisor_product_id",foreign_key:" parent_product_id"
has_many:children,class_name:' Product',foreign_key: " parent_product_id",primary_key:" channel_advisor_product_id"