2017-08-17 5 views
1

J'ai un modèle Product, je veux mettre en œuvre l'auto-association sur ces deux champs channel_advisor_product_id, parent_product_id. Mais quand je l'appelle Product.last.child_products il prend son id au lieu de parent_product_idAjouter auto-un-à-plusieurs association en utilisant d'autres champs, sauf '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" 

Répondre

0

Fondamentalement, le problème est résolu en ajoutant la primary_key et foreign_key des deux associations parent et children. Maintenant, l'identifiant est exclu et self association fonctionne correctement pour mes colonnes fournies.

belongs_to: parent, nom_classe: 'produit', primary_key: "channel_advisor_product_id", foreign_key: "parent_product_id"
has_many: enfants, nom_classe: 'produit', foreign_key: "parent_product_id", primary_key: " channel_advisor_product_id "

1

Utilisez-console rails vous?

Si "oui" exit et "rails c" à nouveau, puis dans la console:

Product.last.child_products 

et voir si la `ll requête utilise "id" ou "parent_product_id".