ruby-on-rails - Rails,在模型中有没有办法提供自上次更新以来的不同?

标签 ruby-on-rails ruby-on-rails-3

给定一个模型,如:

class SentenceItem < ActiveRecord::Base

  after_update :send_changes

  def send_changes
     #### Is it possible to do a diff here with dirty/changed? Showing what's changed since the last save?
  end

end

并且句子模型有一个文本字段。

是否可以在此处使用dirty/changed做一个差异?显示自上次保存以来发生了什么变化?

谢谢

最佳答案

是的,有办法。来自 ActiveModel::Dirty文档:

新实例化的对象不变:

person = Person.find_by_name('Uncle Bob')
person.changed?       # => false

更改名称:
person.name = 'Bob'
person.changed?       # => true
person.name_changed?  # => true
person.name_was       # => 'Uncle Bob'
person.name_change    # => ['Uncle Bob', 'Bob']
person.name = 'Bill'
person.name_change    # => ['Uncle Bob', 'Bill']

哪些属性发生了变化?
person.name = 'Bob'
person.changed        # => ['name']
person.changes        # => { 'name' => ['Bill', 'Bob'] }

关于ruby-on-rails - Rails,在模型中有没有办法提供自上次更新以来的不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6550836/

相关文章:

ruby-on-rails-3 - 更改默认路由名称

ruby-on-rails-3 - 带有 HAML 的 Rails 闪存消息

ruby-on-rails - 使用 rails3-jquery-autocomplete gem 自动完成 active_admin

ruby-on-rails-3 - 使用带有标签的套件钩子(Hook)之前的 RSpec

ruby-on-rails - 我想制作一个 Rails 模型,但我不想将它存储在数据库中

ruby-on-rails - Rspec - Chewy 上的绕过策略

mysql - 有没有办法按单一类型对具有多个属性类型的对象进行排序?

ruby-on-rails - 无法使用 Rails 3 中的 send_file 函数读取文件

ruby-on-rails - 设计为每个用户类型设置不同的根路径

ruby-on-rails - Postgres JSON 列使用表单更新单个键/属性