4

我该怎么做这个伪代码?我想防止例如“nil 类的未定义方法 zip_code”,因为我的现有用户已经有了我们的个人资料。因此,当调用 user.profile 时,如果它不存在,我想创建它。

class User < ActiveRecord::Base
...
  # Associations:
  has_one :profile


  # example call current_user.profile.zip_code
  def profile
    if self.profile exists <-- use super?
      self.profile
   else
     # create association record and return it
     self.build_profile.save
     self.profile
   end
  end
...
end
4

1 回答 1

3

你可以使用after_initialize回调:

class User
  # ..
  after_initialize do
    self.profile ||= self.build_profile
  end
  # ..
end
于 2012-05-02T14:51:37.283 回答