Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add record to a has_and_belongs_to_many relationship

I have two models, users and promotions. The idea is that a promotion can have many users, and a user can have many promotions.

class User < ActiveRecord::Base   has_and_belongs_to_many :promotions end  class Promotion < ActiveRecord::Base   has_and_belongs_to_many :users end 

I also have a promotions_users table/model, with no id of its own. It references user_id and promotions_id

class PromotionsUsers < ActiveRecord::Base end 

So, how do I add a user to a promotion? I've tried something like this:

user = User.find(params[:id]) promotion = Promotion.find(params[:promo_id]) promo = user.promotions.new(promo) 

This results in the following error:

NoMethodError: undefined method `stringify_keys!' for #<Promotion:0x10514d420> 

If I try this line instead: promo= user.promotions.new(promo.id)

I get this error:

TypeError: can't dup Fixnum 

I'm sure that there is a very easy solution to my problem, and I'm just not searching for the solution the right way.

like image 560
Kevin Whitaker Avatar asked Apr 29 '10 19:04

Kevin Whitaker


1 Answers

user = User.find(params[:id]) promotion = Promotion.find(params[:promo_id]) user.promotions << promotion 

user.promotions is an array of the promotions tied to the user.

See the apidock for all the different functions you have available.

like image 194
Tony Fontenot Avatar answered Sep 29 '22 03:09

Tony Fontenot