Mysql::Error


#1

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.


#2

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:


#3

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.


#4

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


#5

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.


#6

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.


#7

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.


#8

Ok, gracias, lo voy a aplicar.