2010-12-23 10 views
10

Me pregunto si hay una manera de hacer esto con rieles o no. Básicamente tengo un modelo de usuario y un modelo de evento. El evento es creado por un usuario y quiero tener una clave externa (user_id) en el modelo de evento que indique quién creó el evento. Además, el evento puede tener muchos usuarios que asisten a ella por lo que el modelo de eventos se convierte en algo así comobelongs_to y has_many con el mismo modelo

belongs_to :user 
has_many :users, :through => :guests #suppose i have the guest model 

y el modelo de usuario se ve algo como

has_many :events, :through => :guests 

No he probado esta asociación todavía, pero quiero estar capaz de decir

e = Event.find(1) 
e.creator #returns the user who created this event 

en lugar de

e.user 

¿Hay alguna manera de hacerlo?

Respuesta

10

Basta con pasar algunas opciones para belongs_to:

belongs_to :creator, :class_name => "User", :foreign_key => "user_id" 

Esto especifica que el método creator será un objeto User, haciendo referencia al campo user_id.

+0

eso es todo! gracias – denniss

+0

espere unos segundos, ¿qué pondría en el modelo de usuario? si quiero decir user.created_events que devuelve los eventos que el usuario ha creado? – denniss

+0

@denniss Puede hacer esto, pero no con un 'has_many: through'. –

Cuestiones relacionadas