Nested Attributes in Rails 3

60 views
Skip to first unread message

Avi

unread,
Nov 20, 2012, 11:32:23 PM11/20/12
to rubyonra...@googlegroups.com
Hello All,

I am stuck in nested attributes:-
here is my code :-

User.rb :-
has_one :address
accepts_nested_attributes_for :address

Address.rb :-

belongs_to :user

_form.html.erb:-

<%= simple_form_for @user ,:validate => true do |f| %>
           <%= f.fields_for :address do |d| %>
         <%= d.input :first_name %>
         <%= d.input :last_name %>
          <% end %>
          <%= f.input :email %>
 <% end %>

in user_controller.rb:-
In new as well as create method I tried with:-
@user = User.new
@user.build_profile

But still I am getting the error as :-
Can't mass-assign protected attributes: address_attributes
Any Suggestions ??
Thanks....

Unni

unread,
Nov 20, 2012, 11:41:04 PM11/20/12
to rubyonra...@googlegroups.com
add

attr_accessible :address_attributes

in your model.

Only the fields that you specify via attr_accessible, are open to mass assignment.

Unni

--
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 rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/dd447A7hSYwJ.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
Unni

avinash behera

unread,
Nov 20, 2012, 11:56:37 PM11/20/12
to rubyonra...@googlegroups.com
I didn't get this :-
attr_accessible :address_attributes

Why we need to define this in user.rb?
We already have has_one relation. Will it not be accessing those attributes in address model automatically? 

Jim Ruther Nill

unread,
Nov 21, 2012, 12:01:23 AM11/21/12
to rubyonra...@googlegroups.com
On Wed, Nov 21, 2012 at 12:56 PM, avinash behera <aavinas...@gmail.com> wrote:
I didn't get this :-
attr_accessible :address_attributes

Why we need to define this in user.rb?
We already have has_one relation. Will it not be accessing those attributes in address model automatically? 

fields_for uses <association>_attributes as the name of the fields when you are using
accepts_nested_attributes_for :association so you need to define this in attr_accessible



--
-------------------------------------------------------------
visit my blog at http://jimlabs.heroku.com

Unni

unread,
Nov 21, 2012, 12:14:27 AM11/21/12
to rubyonra...@googlegroups.com

Rameshwar Vyevhare

unread,
Nov 21, 2012, 12:45:26 AM11/21/12
to rubyonra...@googlegroups.com

avinash behera

unread,
Nov 21, 2012, 12:47:27 AM11/21/12
to rubyonra...@googlegroups.com
I tried with that. But somewhere validations are failing. I had dropped my db. Trying to create a user. But in console it says:
User already exists.
Not sure.
In controller I have mentioned as @user.build_profile. Is it fine?
& in erb file, I am using simple_form_for.
So can we use fields_for there?

Unni

unread,
Nov 21, 2012, 1:06:13 AM11/21/12
to rubyonra...@googlegroups.com
@user = User.new
@user.build_profile

Is that all what you have in the controller in create action? 

@user = User.new(params[:user]) 

is what one would expect.

avinash behera

unread,
Nov 21, 2012, 1:16:41 AM11/21/12
to rubyonra...@googlegroups.com
In new :-

@user = User.new
@user.build_address # here is it required while building the page ?

create :-

@user = User.new(params[:user])
@user.save
If I use build here, I am not getting those attributes present in address model in UI.

Sorry I have communicated wrong. This is the controller

avinash behera

unread,
Nov 21, 2012, 1:25:05 AM11/21/12
to rubyonra...@googlegroups.com
Its working now. Its my fault.
I forgot to remove an attribute's validation which I moved from User model to Address model. There validation was failing.
Thanks for helping me out...

Unni

unread,
Nov 21, 2012, 1:29:21 AM11/21/12
to rubyonra...@googlegroups.com
Cheers !

Jinet

unread,
Nov 21, 2012, 7:28:48 AM11/21/12
to rubyonra...@googlegroups.com

hi..
im going to start learning ruby..now dont know even a single thing about ruby,,can anyone please suggest how to start learning..?
thank you..
jinet

Colin Law

unread,
Nov 21, 2012, 10:58:36 AM11/21/12
to rubyonra...@googlegroups.com
On 21 November 2012 12:28, Jinet <jinet....@gmail.com> wrote:
>
> hi..
> im going to start learning ruby..now dont know even a single thing about
> ruby,,can anyone please suggest how to start learning..?
> thank you..

What has that got to do with the subject line (Nested Attributes in
Rails 3) and why have you posted a large message with many irrelevant
quoted lines?

You say you want to learn to use Ruby, but this is a Ruby on Rails
list so I assume you want to learn Ruby on Rails.
The answer is to start by working through a good rails tutorial such
as railstutorial.org (which is free to use online). I assume you
already know the basics of html, if not then start there.
Also work on your google skills, I am sure that a search for learning
ruby rails would have given you many useful answers.

If you want to ask more then please start a new thread with an
appropriate subject line.

Colin
Reply all
Reply to author
Forward
0 new messages