ここでレールの Null オブジェクトに関するいくつかの回答を見たにもかかわらず、それらを機能させることができないようです。
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 を適切に実行して、オブジェクトの最初の作成時ではなく読み取り時にのみ発生するようにするにはどうすればよいですか。