2012-01-05 12 views
20

tengo 2 modelosrieles modelo has_many, belongs_to relaciones

class User < ActiveRecord::Base 
    has_many :products 
end 

class Product < ActiveRecord::Base 
    belongs_to :user 
end 

¿Es necesario añadir un user_id columna a la tabla producto o por los carriles añado por defecto?

Respuesta

47

No necesita agregar manualmente la columna user_id al modelo Product. Si aún no ha creado su modelo, agregue la referencia en la lista de columnas al generador de modelos. Por ejemplo:

rails generate model Product name:string price:decimal user:references

O, si su modelo Product ya existe lo que tiene que hacer es:

rails g migration addUserIdToProducts user_id:integer

que va a generar una migración que añadir correctamente la columna de la user_id a la products mesa. Con la columna correctamente nombrada (user_id), Rails sabrá que esa es su clave externa.

+0

hey, estoy usando 'postgresql' e hice la creación del modelo usando el primer método que mencionaste. usando 'user: references'. ahora, cuando intento eliminar el objeto del modelo 'user', me da el error' PG :: ForeignKeyViolation: '. Mi expectativa es que todos los 'productos' del' usuario' se eliminen cuando elimine un usuario. PD: Tengo 'belongs_to: user, dependent:: destroy' en mi modelo' Product'. Soy un principiante en los rieles :) –

Cuestiones relacionadas