ruby-on-rails - name - rails has and belongs to many example
Agregar registro a una relación has_and_belongs_to_many (3)
Esto tambien es util
User.promotion.build(attr = {})
así, el objeto de promoción se guarda, cuando se guarda el objeto de usuario.
Y esto es
User.promotion.create(attr = {})
Crea promociones que no necesitas guardar ni modelo de usuario.
Tengo dos modelos, usuarios y promociones. La idea es que una promoción puede tener muchos usuarios, y un usuario puede tener muchas promociones.
class User < ActiveRecord::Base
has_and_belongs_to_many :promotions
end
class Promotion < ActiveRecord::Base
has_and_belongs_to_many :users
end
También tengo una tabla / modelo de promociones_usuarios, sin identificación propia. 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 resulta en el siguiente error:
NoMethodError: undefined method `stringify_keys!'' for #<Promotion:0x10514d420>
Si intento esta línea en su lugar: promo = user.promotions.new (promo.id)
Me sale este error:
TypeError: can''t dup Fixnum
Estoy seguro de que hay una solución muy fácil para mi problema, y simplemente no estoy buscando la solución de la manera correcta.
Puedes hacer solo
User.promotions = promotion #notice that this will delete any existing promotions
o
User.promotions << promotion
Puede leer sobre la relación has_and_belongs_to_many
here .
user = User.find(params[:id])
promotion = Promotion.find(params[:promo_id])
user.promotions << promotion
user.promotions
es una matriz de las promociones vinculadas al usuario.
Vea el apidock para todas las diferentes funciones que tiene disponibles.