Wolas!,

Thanks for the reply. I will be able to try this out in the morning.
I'll get back to you with the results.

Elliott

On Mar 17, 5:58 am, "\"Wolas!\"" <[email protected]> wrote:
> If i understood correctly, you want the role to be added to the user
> upon creation, but its not.
>
> here is the code that would do it
>
> def create
>     logout_keeping_session!
>     params[:user][:login] = params[:user][:first_name] + params[:user]
> [:last_name]
>
>     # Create a random password.
>     params[:user][:password] = User.generate_pass 8
>
>     @user = User.new(params[:user], :roles => [ Role.new(params
> [:role]) ]    # in an array
>
>     # success = @user && @user.save     # user will always have
> something, therefore this line is redundant
>
>     if @user.save
>       redirect_back_or_default('/')
>       flash[:notice] = "Thanks for signing up!"
>     else
>       flash[:error]  = "Too bad sucka!"
>       render :action => 'new'
>     end
>   end
>
> hope it helps
>
> On Mar 16, 11:09 pm,elliottg<[email protected]> wrote:
>
> > Hello.
>
> > Stuck on some HABTM stuff here... I'm new to rails and I'm kinda lost
> > on this topic.
> > FYI This is all within the context of a working restful_authentication
> > and role_requirement  setup. I am simply adding a radio button pair to
> > my new user form. When submitted, I need the appropriate tables
> > updated. As is, only the user table will update. The join table will
> > not. I have tried a handful of different things both for the
> > fields_for params and inside the controller's create action with no
> > luck yet. Here's what I have below.
>
> > Thanks for the input!
>
> > THE CLASSES:
> > class User < ActiveRecord::Base
> >     has_and_belongs_to_many :roles
> > end
>
> > class Role < ActiveRecord::Base
> >   has_and_belongs_to_many :users
> > end
>
> > THE CONTROLLER: Edited for brevity...
> > class UsersController < ApplicationController
> >   def new
> >     @user = User.new
> >   end
>
> >   def create
> >     logout_keeping_session!
> >     username = params[:user][:first_name]
> >     username  += params[:user][:last_name]
> >     params[:user][:login] = username
>
> >     # Create a random password.
> >     random_p = User.generate_pass 8
> >     params[:user][:password] = random_p
>
> >     @user = User.new(params[:user])
>
> >     success = @user && @user.save
> >     if success && @user.errors.empty?
> >       redirect_back_or_default('/')
> >       flash[:notice] = "Thanks for signing up!"
> >     else
> >       flash[:error]  = "Too bad sucka!"
> >       render :action => 'new'
> >     end
> >   end
> > end
>
> > THE FORM: new.html.erb
> > <% form_for @user do |f| -%>
>
> > <p><%= label_tag 'first_name' %><br/>
> > <%= f.text_field :first_name %></p>
>
> > <p><%= label_tag 'last_name' %><br/>
> > <%= f.text_field :last_name %></p>
>
> > <p><%= label_tag 'email' %><br/>
> > <%= f.text_field :email %></p>
>
> > <% fields_for :role, @roles do |ff| %>
> >   <p>Select account type:<br>
> >   <%= label_tag :name_user, "User" %>
> >   <%= ff.radio_button :name, "user" %>
>
> >   <%= label_tag :name_admin, "Admin" %>
> >   <%= ff.radio_button :name, "admin" %>
> >   </p>
> > <% end %>
>
> > <p><%= submit_tag 'Sign up' %></p>
> > <% end -%>
>
> > Here's a sample of how the params are going out:
> > Processing UsersController#create (for 127.0.0.1 at 2009-03-16
> > 17:59:38) [POST]
> >   Parameters: {"user"=>{"first_name"=>"Willy", "last_name"=>"Wonka",
> > "email"=>"[email protected]"}, "commit"=>"Sign up",
> > "authenticity_token"=>"05d982e6eabe5eba6dac466723f9402b9522b3b1",
> > "role"=>{"name"=>"admin"}}
>
>
--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to