Rails: HasManyThroughAssociationNotFoundError

J’ai du mal à faire has_many through une has_many through .

Je continue à recevoir cette exception:

 Article.find(1).warehouses.build ActiveRecord::HasManyThroughAssociationNotFoundError: Could not find the association :ensortinges in model Article 

Ce sont les modèles impliqués:

 class Article  :ensortinges end class Warehouse  :ensortinges end class Entry < ActiveRecord::Base belongs_to :article belongs_to :warehouse end 

Et voici mon schéma:

 create_table "articles", :force => true do |t| t.ssortingng "article_nr" t.ssortingng "name" t.integer "amount" t.ssortingng "warehouse_nr" t.datetime "created_at" t.datetime "updated_at" t.integer "unit" end create_table "ensortinges", :force => true do |t| t.integer "warehouse_id" t.integer "article_id" t.integer "amount" end create_table "warehouses", :force => true do |t| t.ssortingng "warehouse_nr" t.ssortingng "name" t.integer "utilization" t.datetime "created_at" t.datetime "updated_at" end 

Vous devez append

 has_many :ensortinges 

A chacun de vos modèles, puisque l’option: through spécifie simplement une deuxième association à utiliser pour trouver l’autre côté.

@ Meekohi Cela signifie que vous n’avez pas de modèle d’entrée. Je viens de recevoir le message d’erreur moi-même, alors je voulais le signaler (je ne peux pas le publier en tant que commentaire en raison de la mauvaise réputation).

 class Entry < ActiveRecord::Base belongs_to :article belongs_to :warehouse end 

Il suffit de courir

 rails g model Entry 

Vous devez append

 has_many :ensortinges 

Pour chaque modèle, et au-dessus has_many: through, comme ceci:

 class Article < ActiveRecord::Base has_many :entries has_many :warehouses, :through => :ensortinges end class Warehouse < ActiveRecord::Base has_many :entries has_many :articles, :through => :ensortinges end 

Tutoriel plus détaillé sur la gestion des vues et des contrôleurs https://kolosek.com/rails-join-table/