У меня две модели, пользователи и продвижение по службе. Идея состоит в том, что продвижение может иметь много пользователей, и у пользователя может быть много рекламных акций.Добавить запись в has_and_belongs_to_many relationship
class User < ActiveRecord::Base
has_and_belongs_to_many :promotions
end
class Promotion < ActiveRecord::Base
has_and_belongs_to_many :users
end
У меня также есть таблица/модель promotionions_users, без собственного идентификатора. Он ссылается на user_id и promotionions_id
class PromotionsUsers < ActiveRecord::Base
end
Итак, как добавить пользователя в рекламную кампанию? Я пытался что-то вроде этого:
user = User.find(params[:id])
promotion = Promotion.find(params[:promo_id])
promo = user.promotions.new(promo)
Это приводит к следующей ошибке:
NoMethodError: undefined method `stringify_keys!' for #<Promotion:0x10514d420>
Если я пытаюсь эта линия вместо: скидочных = user.promotions.new (promo.id)
Я получаю эту ошибку:
TypeError: can't dup Fixnum
Я уверен, что есть очень простое решение для моих пробл em, и я просто не ищу решение правильно.
Спасибо за быстрый ответ. Я подумал, что я слишком обижен. –
делает << также сохранить связь? – Nonconformist
@ Coolguy123 yes, 'collection << (object, ...)' - это псевдоним collection.push и collection.concat. Это мгновенно запускает обновление sql без ожидания вызова сохранения или обновления родительского объекта. – stereoscott