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.
Jordi A. (Guest)
on 2008-11-01 18: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.
Fernando B. (Guest)
on 2008-11-01 19: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 M. <removed_email_address@domain.invalid>:
Xavier N. (Guest)
on 2008-11-01 19:10
(Received via mailing list)
2008/11/1 Jordi M. <removed_email_address@domain.invalid>:

> 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.
cartuchoGL (Guest)
on 2008-11-01 19:10
(Received via mailing list)
Jordi M. 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
Jose Antonio P. (Guest)
on 2008-11-02 20: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.
Jordi A. (Guest)
on 2008-11-03 00: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.
Xavier N. (Guest)
on 2008-11-03 00:31
(Received via mailing list)
2008/11/2 Jordi AB <removed_email_address@domain.invalid>:

> 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.
Jordi A. (Guest)
on 2008-11-03 09:21
Ok, gracias, lo voy a aplicar.
This topic is locked and can not be replied to.