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.

Reply via email to