Search code examples
ruby-on-railsassociationsbelongs-to

In Rails, how can I retrieve the object on a belongs_to association, without going through the database?


Consider the following setup:

class Parent < ActiveRecord::Base
  has_many :children
end

class Child < ActiveRecord::Base
  belongs_to :parent
end

And this console session:

>> p = Parent.find 41
>> p.some_attr = 'some_value'
>> c = p.children.build
>> c.parent

By watching my log files, I can see that c.parent is querying the db for the parent object. I want instead to access the existing in-memory object (p), because I need access to the parent's some_attr value, which is not yet stored in the database. Is there any way of doing this? c.parent(force_reload=false) doesn't get me there.


Solution

  • You could use :inverse_of to set it. Read more about it here.