2010-07-30 3 views
3

У меня есть события и пользователи/команды.Joins Tables & Rails

class Event 
    has_many :users, :through => :registrations 
end 
class User 
    has_many :events, :through => :registrations 
end 
class Registration 
    belongs_to :users 
    belongs_to :events 
end 

Когда я зарегистрировать пользователя, я их подключения к событию, как так:

@event.users << @user 

ли это неявно создать регистрации объекта для пользователя/события? Я установил столбец: goal_amount в моем переносе регистрации, и я хотел бы иметь возможность установить: goal_amount при создании регистрации. Мне нужно явно создать Регистрацию Есть (например: Registration.create(:user_id => @user.id, :event_id => @event.id, :goal_amount => params[:goal_amount]), чтобы это произошло

ответ

2

Да, добавление пользователя к событию автоматически создает объект отношения
И да, вы должны вручную создать связь, если вы хотите добавить?. этот параметр в середине таблицы.

Одно из решений, чтобы сделать его выглядеть круче было бы создать метод add_user в объекте события.

def add_user user, goal_amount 
    Registration.create({ 
     :user => user, 
     :event => self, 
     :goal_amount => goal_amount) 
    }) 
end 

Тогда вам просто нужно позвонить

@event.add_user @user, 100 
+0

Спасибо! Это сработало отлично :) –

+0

Отметьте мой ответ как принято тогда;) –