2012-03-27 46 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