保存する前に、常にモデルにオブジェクトが存在するかどうかを確認してもらいたいです。もしそうなら、新しいオブジェクトを作成するのではなく、既存のオブジェクトを使用します。
これをモデルのbefore_saveActiveRecordクラスに直接追加することは可能ですか?
自己の価値を変えることはできないので、これは不可能だと思います。
保存する前に、常にモデルにオブジェクトが存在するかどうかを確認してもらいたいです。もしそうなら、新しいオブジェクトを作成するのではなく、既存のオブジェクトを使用します。
これをモデルのbefore_saveActiveRecordクラスに直接追加することは可能ですか?
自己の価値を変えることはできないので、これは不可能だと思います。
これをに追加することはできないと思いますbefore_save
。オブジェクトを作成する場所が少ない場合は、またはを使用するのではなく、手動で指定(find_or_create
またはfind_or_initialize
)することができます。create
new
常にそれを実現したい場合は、new
メソッドをオーバーライドして次のように動作させることができますfind_or_initialize
ActiveRecordはすでにこの機能を提供しています。あなたは次のようなことをすることができます:
User.find_or_initialize_by_email('some@email.com')
これにより、データベースからユーザーが見つかった場合はそのユーザーが返され、渡されたパラメーターに電子メールが設定された新しいユーザーが返されます。その後、他の方法と同じようにオブジェクトを使用し、完了したらsaveを呼び出すことができます(必要に応じて更新または作成されます)。
http://api.rubyonrails.org/classes/ActiveRecord/Base.htmlの詳細(ページでfind_or_initialize_by_を検索してください)