代码之家  ›  专栏  ›  技术社区  ›  Bogdan Gusiev

Rails:检查保存后是否真的保存了模型

  •  4
  • Bogdan Gusiev  · 技术社区  · 15 年前

    ActiveRecord用于在每次调用save方法时在保存回调后调用,即使模型没有更改,也没有生成insert/update查询。

    这实际上是默认行为。在大多数情况下,这是可以的。

    是否有方法确定模型是否实际保存在“保存后”中?

    class Stage < ActiveRecord::Base
      after_save do
        pp changes
      end
    end
    
    s = Stage.first
    s.name = "q1"
    s.save!
    
    2 回复  |  直到 15 年前
        1
  •  7
  •   Simone Carletti    15 年前

    ActiveRecord用于在保存后调用 每次调用save方法时回调 即使模型不是 已更改,没有插入/更新查询 产卵。

    # record invalid, after_save not triggered
    Record.new.save
    
    # record valid, after_save triggered
    r = Record.new(:attr => value)
    
    # record valid and not changed, after_save triggered
    r.save
    

    您想知道的是记录是否更改,而不是记录是否保存。 您可以使用 record.changed?

    class Record
    
      after_save :do_something_if_changed
    
      protected
    
      def do_something_if_changed
        if changed?
          # ...
        end
      end
    end
    
        2
  •  6
  •   boulder_ruby    12 年前

    保存后,检查保存的对象是否为新对象

    a = ModelName.new
    a.id = 1
    a.save
    a.new_record?
    #=> false
    
    推荐文章