Passing a value from form to a model?

Hello,
I’m writing an application that has a user registration functionality,
the
sign up form has a field that is called ‘card’, here the user is
supposed to
enter a valid PIN code. PIN codes are stored in a table called Cards,
each
card has a PIN and a serial number. If the PIN is correct and available
in
the Cards table registration will be completed successfully, else
registration will fail.
I’m relatively new to rails and there still some concepts that are not
clear
to me, this is one of them. My problem is with the PIN code validation
as
described below:

#Viewer:

Signup

<%= error_messages_for :user %> <% form_for :user, :url => users_path do |f| -%>

Username:
<%= f.text_field :username, :size => 25 %>

Email:
<%= f.text_field :email, :size => 25 %>

Password:
<%= f.password_field :password, :size => 25 %>

Password Confirmation:
<%= f.password_field :password_confirmation, :size => 25 %>

Mobile Number:
<%= f.text_field :mobile_number, :size => 13%>

Pin Code:
<%= f.text_field :card, :size => 13%>

<%= submit_tag ‘Sign Up’ %>
<% end -%>

#Model: User.rb
has_many :cards

def self.available_pin?(card)
Card.find_by_pin(card) ? true : false
end

#Controller: users_controller.rb

def create
if User.available_pin?(params[:card])

  @user = User.new(params[:user])
  if @user.save
    self.logged_in_user = @user
    flash[:notice] = "Your account has been created."
    redirect_to messages_url
  else
    render :action => 'new'
  end
else
  flash[:notice] = "PIN is wrong"

end

end

When I try the registration I always get the flash message that says:
‘PIN
is wrong’ even when I try an available PIN.

Thanks in advance.

On 29 Apr 2008, at 11:15, [email protected] wrote:

Pin Code:
<%= f.text_field :card, :size => 13%>

Because you are using form_for, that parameter will be available as
params[:user][:card], not params[:card]

Fred