ror noob need help with easy hidden_field question

I'm trying to save users the trouble of creating a username, so I am generating it based on their email address. It doesn't need to be unique, it is used in the view only, but that's not my question.

My question is how do I store it when the user fills out the form? Obviously, this won't work, bc the user's email isn't saved yet...any help you can provide? The line in ******* is the problem. Thank you.

    - form_for resource_name, resource, :url => registration_path(resource_name) do |f|       = f.error_messages

        = f.label :email         = f.text_field :email

        = f.label :password         = f.password_field :password

        = f.label :password_confirmation         = f.password_field :password_confirmation

************* = f.hidden_field_tag(:username, @user.email.split('@',2).first) ***********************

        = f.submit "Sign Up"

I'm trying to save users the trouble of creating a username, so I am generating it based on their email address. It doesn't need to be unique, it is used in the view only, but that's not my question.

My question is how do I store it when the user fills out the form? Obviously, this won't work, bc the user's email isn't saved yet...any help you can provide? The line in ******* is the problem. Thank you.

   - form_for resource_name, resource, :url => registration_path(resource_name) do |f|      = f.error_messages

       = f.label :email        = f.text_field :email

       = f.label :password        = f.password_field :password

       = f.label :password_confirmation        = f.password_field :password_confirmation

************* = f.hidden_field_tag(:username, @user.email.split('@',2).first) ***********************

       = f.submit "Sign Up"

Why do you need to put it into the form? Seems like this would be a good spot for a before_save handler in your user model. Check to see if the :username field is blank and if so, set it to the first bit of the email address...

-philip

Philip Hallstrom wrote:

Why do you need to put it into the form? Seems like this would be a good spot for a before_save handler in your user model. Check to see if the :username field is blank and if so, set it to the first bit of the email address...

-philip

Thanks! before_save worked great!

code for others:

class User < ActiveRecord::Base   before_save :create_username   private

  def create_username     self.username = self.email.split('@',2).first   end

end

Sioux Sioux wrote:

code for others:

class User < ActiveRecord::Base   before_save :create_username   private

  def create_username     self.username = self.email.split('@',2).first   end

end

So what happens when jim@aol.com and jim@gmail.com both sign up? Perhaps you should just use the whole address.

Best,