In Rails, how do I automatically load my parent object when the child object is loaded? -


i’m using rails 4.2.4. how can automatically load parent object when load child object? have

class myobject < activerecord::base   belongs_to :address, class_name: 'address', foreign_key: :address_id, :autosave => true, dependent: :destroy 

but when call

  @my_object = myobject.find(params[:id])   puts "address; #{@my_object.address} address_id: #{@my_object.address_id}" 

the output is

address;  address_id: 6792 

meaning no parent object loaded, though there address record tied it. automatically loaded when model is. how can that?

edit: in response wishalizer's suggestion, changed models to

class myobject < activerecord::base     …   belongs_to :address, inverse_of: :my_object 

and

class address < activerecord::base   has_one :my_object, inverse_of: :address 

but still got error

nomethoderror (undefined method `includes' #<myobject:0x007fb7232415f8>):   app/controllers/application_controller.rb:9:in `current_my_object'   app/controllers/my_objects_controller.rb:5:in `edit' 

when applying suggestion given.

to include parent relationship in activerecord relation use .includes when create collection in controller. .includes symmetrically true, either parent child or child parent.

if explicitly invoke .includes, , should able reference parent child collection wish.

@my_object = myobject.find(params[:id]).includes(:address) 

model relationships required [new section]

append/insert inverse_of model relationship defs such

    class myobject           belongs_to :address, {...your model rels..}, inverse_of: :my_object         ...     end 

you must create symmetrical inverse_of in related model

   class address        has_many :my_objects, {...your model rels..}, inverse_of: :address       ...    end 

Comments