使用除“id”之外的其他字段添加自己的一对多关联

时间:2017-08-17 07:57:45

标签: ruby-on-rails activerecord self-join

我有一个模型Product,我想在这两个字段channel_advisor_product_idparent_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"

2 个答案:

答案 0 :(得分:1)

您使用的是rails console吗?

如果“是”再次键入exit和“rails c”,则在控制台中输入:

Product.last.child_products

您将看到查询是否使用“ id ”或“ parent_product_id ”。

答案 1 :(得分:0)

基本上,通过添加primary_keyforeign_key来解决问题 关联parentchildren。现在,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"