Соединяет столы и рельсы - PullRequest
3 голосов
/ 30 июля 2010

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

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]), чтобы это произошло?

1 Ответ

2 голосов
/ 30 июля 2010

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

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

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

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

@event.add_user @user, 100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...