form field returns string instead of int

<%= select( "user" , "type", { "Practice" => 1, "Doctor" => 2, "Hygenist" =>3, "Assistant" => 4 }, {:include_blank => false, :prompt =>true}) %>

produces:

<select id="user_type" name="user[type]"><option value="">Please select</option> <option value="3">Hygenist</option> <option value="4">Assistant</option> <option value="2">Doctor</option> <option value="1">Practice</option></select> </p>

and the form returns a string. how do i get the form to submit an int.. or get AR to convert it? select fields can return an int right?

params[:user][:type].to_i

All int’s submitted by fields are actually submitted as strings. Same goes for dates and anything else, it’s always a string.

this would be in the controller in create and update then?

Indeed

forgive me I'm a newbie...

I've tried both

params[:user][:type].to_i params[:user][:type]=params[:user][:type].to_i

neither work..

You want to do:

@user.type = params[:user][:type].to_i @user.save!

or something similiar.

turns out :type must be used internal to AR.. I changed it was an INT and saved it correctly!!

maybe a standard of prepending internal symbols with the classname would eliminate collitions

AR will know what to do with the string. The problem is that you're using the word 'type.' Change it to something else and it will work.

Damn it, I should’ve noticed.

Yes type is a reserved field in ActiveRecord. It is used for putting types on Single Table Inheritance tables.