Forum: Rails-ES Mysql::Error

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Fcdc04458f37a46251ccc094dde8e03e?d=identicon&s=25 Jordi AB (molistok)
on 2008-11-01 17:59
Hola buenas,
He creado un modelo para los detalles de un usuario, al probar la acción
de editar los detalles de un usuario me sale el siguiente error:

ActiveRecord::StatementInvalid in Detalls usersController#edit
Mysql::Error: Unknown column 'detalls_users.users_id' in 'where clause':
SELECT * FROM `detalls_users`     WHERE (`detalls_users`.users_id = 2)
LIMIT 1

El error sale al intentar hacer lo siguiente:

 @users.detalls_users ||= DetallsUsers.new

en el modelo users tengo:

has_one :detalls_users

y en detalls_users:
belongs_to :users

Alguien me puede decir que estoy hacinedo mal? Espero que sea un error
de principiante...ya que soy ésto, un novato en RoR.

Gracias.
89e7c8b162c71e9905fbfe7d2ec376dc?d=identicon&s=25 Fernando Blat (ferblape)
on 2008-11-01 18:09
(Received via mailing list)
Hola Jordi,

por lo que parece la tabla details_users no tiene la columna users_id
creada, como se puede observar en el error de MySQL que has pegado.

2008/11/1 Jordi Molist <ruby-forum-incoming@andreas-s.net>:
7223c62b7310e164eb79c740188abbda?d=identicon&s=25 Xavier Noria (fxn)
on 2008-11-01 18:10
(Received via mailing list)
2008/11/1 Jordi Molist <ruby-forum-incoming@andreas-s.net>:

> belongs_to :users

El convenio ahi es singular:

   belongs_to :user

Tambien se ve en el codigo una sospechosa variable "@users" en plural.
Y por otro lado en una has_one el asociado suele ir tambien en
singular:

   has_one :address
   has_one :avatar
   has_one :attachment

Mirate por otro lado la API que monta has_one, ya que

   @user.detalls_users=

graba el DeatallUser ahi mismo, y como estas en una accion #edit puede
que no te convenga porque queda fuera de la transaccion que trata de
grabar el @user.
Bc309914890c202136d6964cb3033ceb?d=identicon&s=25 cartuchoGL (Guest)
on 2008-11-01 18:10
(Received via mailing list)
Jordi Molist escribió:
> Hola buenas,
>

Buenas,

>  @users.detalls_users ||= DetallsUsers.new
>
> en el modelo users tengo:
>

Creo que tu problema es que el modelo deberia llamarse User (singular)

> has_one :detalls_users
>

has_one :detall_user

> y en detalls_users:
> belongs_to :users
>

belongs_to :user
> Alguien me puede decir que estoy hacinedo mal? Espero que sea un error
> de principiante...ya que soy ésto, un novato en RoR.
>

En las migraciones asegurate de tener la key para la relacion.

A menos que por algun motivo el modelo deba llamarse Users frente a
User.

> Gracias.
>

dnd
98ee355266e55690050a20fd76ee8c67?d=identicon&s=25 Jose Antonio Parra (pikislabis)
on 2008-11-02 19:31
 La tabla es detalls_user o details_user?? Es que a lo mejor es la "l"
esa que se ha colado.


Jordi AB wrote:
> Hola buenas,
> He creado un modelo para los detalles de un usuario, al probar la acción
> de editar los detalles de un usuario me sale el siguiente error:
>
> ActiveRecord::StatementInvalid in Detalls usersController#edit
> Mysql::Error: Unknown column 'detalls_users.users_id' in 'where clause':
> SELECT * FROM `detalls_users`     WHERE (`detalls_users`.users_id = 2)
> LIMIT 1
>
> El error sale al intentar hacer lo siguiente:
>
>  @users.detalls_users ||= DetallsUsers.new
>
> en el modelo users tengo:
>
> has_one :detalls_users
>
> y en detalls_users:
> belongs_to :users
>
> Alguien me puede decir que estoy hacinedo mal? Espero que sea un error
> de principiante...ya que soy ésto, un novato en RoR.
>
> Gracias.
Fcdc04458f37a46251ccc094dde8e03e?d=identicon&s=25 Jordi AB (molistok)
on 2008-11-02 23:22
Hola buenas,
lo primero dar las gracias por todas las respuestas, me han sido muy
útiles. La verdad es que me estoy haciendo un lío con los modelos en
singular o en plural. Tenia pensado hacerlos en plural..en vuestra
opinión por lo que veo es mejor cambiarlo a singular no?

El fallo estaba en la tabla detalls_users (respondiendo a José Antonio,
la tabla es detalls_users) que en vez de haber puesto users_id habia
puesto user_id.. en fin, gracias a todos por la ayuda.
Saludos.
7223c62b7310e164eb79c740188abbda?d=identicon&s=25 Xavier Noria (fxn)
on 2008-11-02 23:31
(Received via mailing list)
2008/11/2 Jordi AB <ruby-forum-incoming@andreas-s.net>:

> lo primero dar las gracias por todas las respuestas, me han sido muy
> útiles. La verdad es que me estoy haciendo un lío con los modelos en
> singular o en plural. Tenia pensado hacerlos en plural..en vuestra
> opinión por lo que veo es mejor cambiarlo a singular no?

Por convenio el modelo es singular (User) y su tabla plural (USERS).
Al aprender Rails fijate en esas convenciones y aplicalas, con ello
los valores por defecto de todo lo que es configurable (que es
bastante) serviran y no tendras que escribir apenas.
Fcdc04458f37a46251ccc094dde8e03e?d=identicon&s=25 Jordi AB (molistok)
on 2008-11-03 08:21
Ok, gracias, lo voy a aplicar.
This topic is locked and can not be replied to.