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/