我有一個表單繼承機制和一個基於文本類型創建對象的控制器方法。當使用Object.const_get()創建對象時,rails不會調用before_create new
從我的控制器:
tile = Object.const_get(tile_data[:type]).new(params_from_tile(tile_data))
tile.save
我的模型基類裏面我有幾個創建前鉤:
before_create :set_handle, :upload
看來沒有我的鉤子是射擊,它有什麼做我使用Object.const_get來創建我的對象?
編輯:我設法通過不使用Object.const_get()。現在我只是直接調用我的Tile.new,並沒有出現任何負面影響,所以是的。
你的代碼不是創建記錄,而是隻初始化它,因此你的'before_create'回調函數沒有執行。使用'.create(...)'而不是'.new()'或使用'after_initialize'回調 – MrYoshiji
對不起,我省略了那部分,我正在調用.save – denodster
嘗試在'set_handle'或'upload '看看是否引發了這個錯誤。這樣你就可以確定這些回調是否被觸發。 – MrYoshiji