检查logging是否被摧毁了

所以有

record.new_record? 

检查是否有新东西

我需要检查是否有什么东西在出路。

 record = some_magic record.destroy record.is_destroyed? # => true 

就是这样 我知道摧毁冻结的对象,所以冻结? 有些作品,但有什么明确的任务呢?

你可以这样做。

 Record.exists?(record) 

但是,这将会对数据库造成不必要的影响。 我所知道的唯一的另一个解决scheme就是像上面提到的那样做一个callback。

 attr_accessor :destroyed after_destroy :mark_as_destroyed def mark_as_destroyed self.destroyed = true end 

然后检查record.destroyed

去做就对了:

 record.destroyed? 

细节在这里ActiveRecord ::持久性

这很快就要到了。 在最新的Riding Rails文章中,它说:

最后,它不一定是BugMash相关的,但JoséValim – 其他几十个提交中 – 增加了model.destroyed ?. 只有当前正在查看的实例已被成功销毁,这个漂亮的方法才会返回true。

所以你去了 快来了!

destroy一个对象不会返回任何东西,除了一个调用freeze (据我所知),所以我认为frozen? 是你最好的select 你的其他select是从ActiveRecord::RecordNotFound拯救,如果你做了像record.reload东西。

我认为迈克的策略可能是最好的,或者如果你想开始“做出假设”,你可以为这些案例写一个包装。

干杯。

虽然record.troytroyed? 工作正常,并返回真或假,你也可以干这一点点,并创build条件,如果你在你的控制器上打电话销毁。

 record = Object.find(params[:id]) if record.destroy ... happy path else ... sad path end 

意识到这个post在游戏中有点晚了。 但是如果有人想讨论这个,我就是游戏! 附注:我也有一个after_destroyvalidation我的模型,而它的工作,一个像这样的东西单独的方法似乎是矫枉过正;)

不知道更多的应用程序的逻辑,我认为,冻结? 是你最好的select

如果不这样做,你肯定可以添加一个“已销毁”属性到你在callback中触发的模型中,如果你想要一个更精确的解决scheme,可以检查它。