Forum: Ruby on Rails Error Messages while entering data in 2 tables with one form

Posted by Salil Gaikwad (salil)
on 2009-07-03 16:15
Hi All,

I want to enter parameters in 2 tables which are submitted using one
form.
Following is the relation of models.
In UserInfo.rb
has_one :user
validates_associated :user
validates_presence_of :city

In User.rb
belongs_to :user_info
validates_presence_of :first_name


I write following code in my UserInfosController
@user_info = UserInfo.new(params[:user_info])
@user_info.build_user(:first_name=>'')  # which i'll modify later
@user_info.save

now if i click the submit button w/o entering any values i.e.
 params[:userinfo][:city]=""

it gives me two error
    * City can't be blank
    * User is invalid


but i want second error should be as follows
    *first name can't be blank

I would like to know how to do it or is there any other way in rails to
enter data into two tables using one form.


Regards,

Salil Gaikwad
Posted by Gavin Morrice (dr_gavin)
on 2009-07-03 16:39
(Received via mailing list)
validates_associated checks if the associated object (in this case
User) is a valid record.
If not, it adds an error to the UserInfo object's user method. ("User
is invalid")

"first name can't be blank" is an error on the User object's
first_name method.

If you want to display the "first name can't be blank" you'll need to
access it either through <%= error_messages_for :user %> or
@user.errors.on(:first_name)

Hope that helps

Gavin

http://handyrailstips.com

On Jul 3, 3:15 pm, Salil Gaikwad <rails-mailing-l...@andreas-s.net>
Posted by Salil Gaikwad (salil)
on 2009-07-03 17:00
Hi Gavin,


I try following as u say
<%= error_messages_for :user %>
 but it gives me same error messages.
i don't know how to use @user.errors.on(:first_name)
and where to use?


Regards,

Salil Gaikwad
Posted by Gavin Morrice (dr_gavin)
on 2009-07-04 11:43
(Received via mailing list)
To get rid of the "user is invalid",  remove
validates_associated :user from the UserInfo model

Meanwhile, read up on validates_associated:
http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M002461
and make sure you want ot use it here.

Gavin

http://handyrailstips.com

On Jul 3, 4:00 pm, Salil Gaikwad <rails-mailing-l...@andreas-s.net>
Posted by Gavin Morrice (dr_gavin)
on 2009-07-04 11:55
(Received via mailing list)
To get rid of the "user is invalid",  remove
validates_associated :user from the UserInfo model

Meanwhile, read up on validates_associated:
http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#M002461
and make sure you want ot use it here.

Gavin

http://handyrailstips.com

On Jul 3, 4:00 pm, Salil Gaikwad <rails-mailing-l...@andreas-s.net>
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.