tutorial rails que ejemplos curso caracteristicas aprender ruby-on-rails ruby-on-rails-3

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''