尽管在这里查看了一些关于 Rails 中空对象的答案,但我似乎无法让它们工作。
class User < ActiveRecord::Base
has_one :profile
accepts_nested_attributes_for :profile
def profile
self.profile || NullProfile #I have also tried
@profile || NullProfile #but it didn't work either
end
end
class NullProfile
def display #this method exists on the real Profile class
""
end
end
class UsersController < ApplicationController
def create
User.new(params)
end
end
我的问题是,在创建用户时,我为配置文件传递了正确的嵌套属性(profile_attributes),最终我的新用户得到了一个 NullProfile。
我猜这意味着我的自定义配置文件方法在创建和返回 NullProfile 时被调用。如何正确执行此 NullObject 以便仅在读取时发生,而不是在对象的初始创建时发生。