检查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,可以检查它。