引用关联对象返回Nil

时间:2015-08-27 17:25:06

标签: ruby-on-rails ruby-on-rails-3 activerecord model associations

我有两个模特。

class User < ActiveRecord::Base
  has_one :message
end

class Message < ActiveRecord::Base
  belongs_to :user
end

如果我创建的用户具有关联的Message并删除该消息并创建一个新消息,则user.message将返回nil。例如。

user = User.create

message = Message.create(user_id: user.id)

Message.where(user_id: user.id).destroy_all

Message.create(user_id: user.id)

# Now if I call this below, it always returns nil
user.message

为什么会这样? Rails 3不应该接受这种变化吗?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在执行user.message之前再次加载对象,user.reload

reload - 从数据库重新加载记录。