Tengo dos modelos, usuarios y promociones. La idea es que una promoción puede tener muchos usuarios y un usuario puede tener muchas promociones.Agregar registro a una relación has_and_belongs_to_many
class User < ActiveRecord::Base
has_and_belongs_to_many :promotions
end
class Promotion < ActiveRecord::Base
has_and_belongs_to_many :users
end
También tienen una mesa promotions_users/modelo, sin ID de su cuenta. Hace referencia a user_id y promotions_id
class PromotionsUsers < ActiveRecord::Base
end
Entonces, ¿cómo agrego un usuario a una promoción? He intentado algo como esto:
user = User.find(params[:id])
promotion = Promotion.find(params[:promo_id])
promo = user.promotions.new(promo)
Esto da como resultado el siguiente error:
NoMethodError: undefined method `stringify_keys!' for #<Promotion:0x10514d420>
Si trato de esta línea en su lugar: promo = user.promotions.new (promo.id)
consigo este error:
TypeError: can't dup Fixnum
estoy seguro de que hay una solución muy fácil de mis probl em, y simplemente no estoy buscando la solución de la manera correcta.
Gracias por la rápida respuesta. Pensé que estaba complicando las cosas. –
does << también guarda la asociación? – Nonconformist
@ Coolguy123 sí, 'colección << (objeto, ...)' es un alias de collection.push y collection.concat. Esto dispara instantáneamente la actualización sql sin esperar la llamada de guardar o actualizar en el objeto principal. – stereoscott