Forum: Ruby on Rails accepts_nested_attributes: undefined method 'association'_attributes

Posted by Serguei Cambour (javix)
on 2013-03-04 22:23
(Received via mailing list)
I have 2 models Timesheet and TimeEntry:

class Timesheet < ActiveRecord::Base
  attr_accessible :status, :user_id, :time_entries_attributes
  has_many :time_entries, dependent: :destroy
  accepts_nested_attributes_for :time_entries, :reject_if => proc {
|attributes| attributes['worktime'].blank? }
end

class TimeEntry < ActiveRecord::Base
  attr_accessible :task_id, :timesheet_id, :workdate, :worktime
  belongs_to :timesheet
end

As explained in Rails API:

```
Using with attr_accessible

The use of attr_accessible can interfere with nested attributes if youre
not careful. For example, if the Member model above was using
attr_accessible like this:

attr_accessible :name
You would need to modify it to look like this:

attr_accessible :name, :posts_attributes
```
If I try to do the same for my case with time_entries association:
```
irb(main):016:0> t = Timesheet.new
=> #<Timesheet id: nil, user_id: nil, status: nil, created_at: nil,
updated_at: nil>
irb(main):017:0> t.time_entries_attributes
NoMethodError: undefined method `time_entries_attributes' for
#<Timesheet:0x007fa8aee56e98>
```
It does not work. Any idea?

Thanks and regards
Posted by Lorenz Blackbird (ratman)
on 2013-03-05 13:07
I'm not sure, but I think that you must use "build" method to create a 
TimeEntry associated to TimeSheet.
Posted by Serguei Cambour (javix)
on 2013-03-05 13:26
(Received via mailing list)
On Tuesday, March 5, 2013 1:07:13 PM UTC+1, Ruby-Forum.com User wrote:
>
> I'm not sure, but I think that you must use "build" method to create a
> TimeEntry associated to TimeSheet.
>
> Sorry , but the question was not about how to create time_entries
> association but how to receive the association attributes. I believed that
> calling timesheet.time_entries_attributes will do that.
>

Regards
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.