Hey Sharagoz, Thanks a lot. It worked exactly as desired. Now I was lead to believe that the habtm relationship would be created automagically when the user object is created. Why is it we had to explicitly define it like this?
Thanks a lot! -brianp On May 18, 5:48 am, Sharagoz <shara...@gmail.com> wrote: > I dont use HABTM much myself, however I dont think this line will > work: > @user = �...@dealer.users.create(params[:user].merge(:role_id => 3) > > Try something like this instead: > @dealer = Dealer.create(params[:dealer]) > @user = �...@dealer.users.new(params[:user]) > @user.roles << Role.find(3) > @user.save > > On May 18, 12:22 pm, brianp <brian.o.pea...@gmail.com> wrote: > > > > > Based of the declaritive_authorization railscast I've set up a roles > > table containing 3 role types. A user table and a roles_users table. > > No matter what I do the join table is always empty. > > > DB: > > create_table "roles", :force => true do |t| > > t.string "role_type" > > t.datetime "created_at" > > t.datetime "updated_at" > > end > > > create_table "roles_users", :id => false, :force => true do |t| > > t.integer "role_id" > > t.integer "user_id" > > end > > > add_index "roles_users", ["role_id"], :name => > > "index_roles_users_on_role_id" > > add_index "roles_users", ["user_id"], :name => > > "index_roles_users_on_user_id" > > > create_table "users", :force => true do |t| > > t.string "first_name", :null => false > > t.string "middle_name" > > t.string "last_name", :null => false > > t.string "email", :null => false > > t.string "dealer_id", :null => false > > ............ > > > role.rb model: > > class Role < ActiveRecord::Base > > has_and_belongs_to_many :users > > > attr_protected :role_type > > end > > > user.rb model: > > class User < ActiveRecord::Base > > acts_as_authentic do |c| > > c.logged_in_timeout = 10.minutes > > c.login_field = :email > > end > > has_and_belongs_to_many :roles > > belongs_to :dealer > > > def role_symbols > > roles.map do |file| > > role.name_underscore.to_sym > > end > > end > > > attr_accessible :email, :password, :password_confirmation, :first_name, > > :middle_name, :last_name > > > end > > > The user is being created here: > > �...@dealer = Dealer.new(params[:dealer]) > > �...@dealer.save! > > �...@user = �...@dealer.users.create(params[:user].merge(:role_id => 3) > > �...@dealer.addresses.create(params[:mailing_address]) > > > Every field is created without error except the join table is left > > blank always. If i call: > > @user.role.create it will successfully create a new role (with a blank > > name which is bad) and a join table row. Other then that the join > > table is always empty. > > > Any suggestions. I've run out of things to try. > > > cheers, > > brianp > > > -- > > You received this message because you are subscribed to the Google Groups > > "Ruby on Rails: Talk" group. > > To post to this group, send email to rubyonrails-t...@googlegroups.com. > > To unsubscribe from this group, send email to > > rubyonrails-talk+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/rubyonrails-talk?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-t...@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com. > For more options, visit this group > athttp://groups.google.com/group/rubyonrails-talk?hl=en. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.