through rails one many has_one has_many has_and_belongs_to_many has example belongs_to belongs and active ruby-on-rails ruby activerecord has-many-through

ruby-on-rails - one - rails has_many through example



Rails: HasManyThroughAssociationNotFoundError (3)

@Meekohi Esto significa que no tienes un modelo de entrada. Acabo de recibir el mensaje de error, así que quería señalarlo (no puedo publicarlo como comentario debido a la baja reputación).

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

Simplemente ejecuta

rails g model Entry

Tengo problemas para conseguir que funcione una has_many through .

Sigo recibiendo esta excepción:

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

Estos son los modelos involucrados:

class Article < ActiveRecord::Base has_many :warehouses, :through => :entries end class Warehouse < ActiveRecord::Base has_many :articles, :through => :entries end class Entry < ActiveRecord::Base belongs_to :article belongs_to :warehouse end

Y este es mi esquema:

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


Deberías agregar

has_many :entries

Para cada modelo, y arriba has_mucho: a través de, así:

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

Tutorial más detallado sobre cómo manejar la vista y los controladores https://kolosek.com/rails-join-table/


Necesitas agregar

has_many :entries

Para cada uno de sus modelos, ya que la opción: a través simplemente especifica una segunda asociación que debe usar para encontrar el otro lado.