I have two models:
User (email:string)
Profile (name:string)
class User < ActiveRecord::Base
has_one :profile
delegate :name, :name=, :to => :profile
end
class Profile < ActiveRecord::Base
belongs_to :user
end
rails c
u = User.new
u.build_profile #=> init Profile
u.name = 'foo'
u.email = 'some@ema.il'
u.save #=> both User and Profile are saved
u.name = 'bar'
u.save #=> true, but changes in Profile were not saved!
u.email = 'new@ema.il'
u.save #=> true, new User email was saved, Profile - still not!
u.name #=> 'bar', but in database it's 'foo'
Why the Profile is not being updated(saved only for the first time)? How to fix this?
ArcaneRain, you should add the ‘autosave’ option on your relationship instead of adding a callback for that:
has_one :profile, :autosave => trueyou should also investigate the ‘dependent’ options.
More info here:
http://guides.rubyonrails.org/association_basics.html#has_one-association-reference