Rails委托更新调用

Rus*_*nov 8 delegates ruby-on-rails

我有两个模型:(
User电子邮件:字符串)
Profile(名称:字符串)

class User < ActiveRecord::Base
   has_one :profile   
   delegate :name, :name=, :to => :profile   
end
Run Code Online (Sandbox Code Playgroud)
class Profile < ActiveRecord::Base
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

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' 
Run Code Online (Sandbox Code Playgroud)

为什么未更新配置文件(仅首次保存)?如何解决这个问题?

gam*_*mov 12

ArcaneRain,您应该在关系中添加"自动保存"选项,而不是为此添加回调:

has_one :profile, :autosave => true

你还应该调查'依赖'选项.更多信息:http: //guides.rubyonrails.org/association_basics.html#has_one-association-reference