2012-03-27 63 views
0

我需要知道模型是否處於保存狀態(before_validate和after_save之間)。指示保存狀態下的activerecord模型的屬性?

class ModelA < ActiveRecord::Base 
    before_save: do_before 

    def do_before 
    modelb.create(:attr => 123, :ref => self) 
    end 
end 

class ModelB < ActiveRecord::Base 
    before_create: do_before 

    def do_before 
    self.ref.my_attr = 321 
    self.ref.save! unless self.ref.is_saving? 
    end 
end 

我需要「is_saving?」屬性爲我的項目中的每個模型實例。什麼是最好的方式來實現呢?

+0

也許,創建基本模型類可以被繼承ActiveRecord :: Base並聲明is_saving屬性的系統中的所有模型繼承。 – 2012-03-27 06:26:27

回答

0

難道你不想通過使用ActiveRecord的:around_save回調在:before_save:after_save之間設置一個實例變量,然後產生保存嗎?無論如何,這個問題對我來說不是太清楚。 is_saving?方法的目的是什麼?

+0

這是我試圖做的:modela before_save在modelb中創建記錄。在modelb中,modela的before_create回調更改屬性,如果modela is_saving?它不應該做modela.save! (在其他情況下應該做modela.save!) – Jonas 2012-03-27 10:38:08

+0

我編輯了有問題的ruby代碼,以更好地說明我的最新評論。 – Jonas 2012-03-27 10:47:49