ruby on rails - rails - asociación llamada no encontrada tal vez con errores ortográficos en la asociación de rieles
ruby on rails que es (1)
Este es un error tipográfico típico:
@post = Post.joins(:customers).select("customers.*,posts.*").find params[:id]
# should be:
@post = Post.joins(:customer).select("customers.*,posts.*").find params[:id]
#^^ no plural
Porque definiste la relación de esta manera (usando singular):
# Post model
belongs_to :customer
Algunas cosas para saber:
- En el método
joins
/includes
, use siempre el mismo nombre que la relación - En las cláusulas
where
, utilice siempre el nombre pluralizado de la relación (en realidad, el nombre de la tabla, que es por defecto el nombre del modelo en plural, pero también se puede establecer manualmente)
Ejemplos:
# Consider these relations:
User has_many :posts
Post belongs_to :user
# Usage of joins/includes & where:
User.includes(:posts).where(posts: { name: ''BlogPost #1'' })
#^ ^
Post.joins(:user).where(users: { name: ''Little Boby Table'' })
#^^ ^
Preguntas similares:
Aquí está mi controlador
@post = Post.joins(:customers).select("customers.*,posts.*").find params[:id]
Mi modelo de publicación
belongs_to :customer
Mi modelo de cliente
has_many :posts
Y recibo un error como
Association named ''customers'' was not found on Post; perhaps you misspelled it?
Esta es mi salida de controlador:
Processing by PostsController#show as */*
Parameters: {"id"=>"6"}
Post Load (0.5ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = $1 LIMIT 1 [["id", "6"]]
Completed 500 Internal Server Error in 113ms
ActiveRecord::ConfigurationError (Association named ''customers'' was not found on Post; perhaps you misspelled it?):
app/controllers/posts_controller.rb:16:in `show''