私は単一のテーブル継承メカニズムと、テキスト型に基づいてオブジェクトを作成するコントローラメソッドを持っています。私のコントローラからObject.const_get()でオブジェクトを作成するときにbefore_createが呼び出されないnew
:私のモデルベースクラスの内部
tile = Object.const_get(tile_data[:type]).new(params_from_tile(tile_data))
tile.save
I持っているいくつかの前に作成フック:
before_create :set_handle, :upload
それはそれはとは何かを持っていない、私のフックのどれもが発射されていない表示されます私のオブジェクトを作成するObject.const_getの私の使用?
編集:私はObject.const_get()を使用しないでこれを回避することができました。新しい今私は自分のTile.newを直接呼び出すだけで、ネガティブな反響はないようです。
あなたのコードはレコードを作成するのではなく*初期化する*ため、あなたの 'before_create'コールバックは実行されません。 '.new()'の代わりに '.create(...)'を使う '' after_initialize''コールバックを使う – MrYoshiji
残念ながら、私はその部分を省いて、.saveを呼び出しています – denodster
'set_handle'または' upload 'そのエラーが発生しているかどうかを確認してください。こうすることで、これらのコールバックがトリガーされたかどうかを確認できます。 – MrYoshiji