2013-08-11 2 views
2

Basé sur http://guides.rubyonrails.org/association_basics.html#self-joinsse parent dans le modèle d'auto-référentiel

J'ai créé une jointure réflexive modèle appelé Catégorie

rails g model Category name parent_id:integer 

j'ai modifié le modèle category.rb comme ci-dessous

Class Category < ActiveRecord::Base 
    has_many :sub_categories, class_name: "Category", foreign_key: "parent_id" 
    belongs_to :parent_category, class_name: "Category" 
end 

maintenant dans la console Je crée deux enregistrements de catégorie comme

a = Category.create(name: "Animal") 
b = Category.create(name: "Dog") 

a.sub_categories << b 
a.save 

maintenant

a.sub_categories # returns Dog 

cependant

b.parent_category # returns nil 

Comment puis-je obtenir le retour parent_category l'enregistrement parent seul correctement?

Aussi, si je ne b.parent_category = a

je reçois l'erreur suivante

ActiveModel::MissingAttributeError: can't write unknown attribute 'parent_category_id' 

Répondre

6

Vous devez modifier l'association parent_category.

Vous devez spécifier la clé étrangère.

belongs_to :parent_category, class_name: "Category", foreign_key: 'parent_id' 
Questions connexes