私はRubyで新しく、コードベースを継承しました。私は次のエラーを取得しようとすると、今私は、自分のアプリケーションに新しいユーザーアカウントを作成することはできません:NilClass :ユーザーでRuby on Railsでは、ActiveRecordオブジェクトのmember_ofにどのようにデフォルト値を割り当てるのですか?
NoMethodError :: RegistrationsController位nilのため
未定義のメソッド `name」を作成しますRails.root:/ home/nathan/dev/legwork-core
アプリケーショントレース|フレームワークトレース|呼び出し元のコードはここにあるblock (2 levels) in <class:Contact>' app/models/user.rb:31:in
update_contact」
に::フルトレース アプリ/モデル/ contact.rb:74
searchable do
string :category do
self.category.name
end
end
カテゴリContactCategoryのインスタンスであることを想定している、と私は、私は必要だと思いますそのnilの場合は、デフォルトにself.categoryを設定します。そこに他の
before_create :set_defaults
def set_defaults
self.category = ContactCategory.first if self.category.nil?
end
誰かがbefore_saveでこのロジックを置くことを示唆しているが、:
def after_initialize
self.category = ContactCategory.first if self.category.nil?
end
をそして私が試した:私も試した
after_initialize :set_defaults
def set_defaults
self.category = ContactCategory.first if self.category.nil?
end
:私はそれを修正するために、これを試してみましたこの論理を持っているbefore_saveは既に存在しています。そこで、最初は作成者がデフォルトを意図したものを見ました。
UPDATE:
この質問は今私が間違っているかを見ることに愚かです。 ContactCategory.firstもnilではないと仮定したため、代入文が実行されなかったと仮定していました。残念ながら、ここのすべてが期待どおりに機能しています。物語のモラルは:
私がデフォルトを設定するために使っていたすべてのフックが正しく動作していました。 ActiveRecordを使ってデフォルトを設定することをお勧めします。
あなたは私たちにデータベース構造を表示できますか?テーブルを記述しますか?現在、あなたは '名前'を使用していますが、そのフィールドは存在しないようです。 –
これはNoMethodErrorです。Users :: RegistrationsController#create 未定義のメソッド 'name –
実際の問題は、カテゴリがnil:' undefined method 'name' for nil:NilClass'です。 – sczizzo