has_one在更新belongs_to对应项后仍返回nil

Joe*_*ann 1 ruby-on-rails

我有一个用户模型has_one :designpad,带有belongs_to :user和列的设计垫模型user_id.

现在我这样做:

u = User.first
d = Designpad.new
d.user_id = u.id
d.save

d.user # returns the user (== u)
u.designpad # always returns nil, but why?
Run Code Online (Sandbox Code Playgroud)

为什么u.designpad返回零?u.methods列出的方法designpaddesignpad=,同时采用了与预期has_one关联.

u.designpad只是不会返回预期的设计垫.

fl0*_*00r 5

正如@keymone所说,你的u对象没有重新加载的问题.您也可以稍微重构一下代码:

u = User.first
d = user.create_designpad
# Check:
d.user
#=> u
u.designpad
#=> d
Run Code Online (Sandbox Code Playgroud)