如何实现类似“自动插入时间戳”的功能

时间:2011-09-20 19:28:11

标签: ruby-on-rails ruby-on-rails-3.1 ruby-on-rails-plugins

我的大多数表格中都有几个字段created_byupdated_by。这将包含创建或更新Object的用户的用户标识。是否有可能像rails如何处理created_at一样有类似的功能?我基本上希望它的功能与插入时间戳的方式相同。我应该能够在迁移脚本的列中定义并配置rails,以便在每次更改特定对象时从辅助方法中获取用户对象。有没有直接的方法来做或有插件这样做?

2 个答案:

答案 0 :(得分:3)

此外,您可以在没有宝石但使用Rails Observers

的情况下执行此操作

您可以像这样创建观察者:

class UserTouchObserver < ActiveRecord::Observer
  observe :product, :post, :comment

  def after_create(model)
    update_attribute(:created_by, current_user.id) if model.respond_to?(:created_by)
  end

  def after_update(model)
    update_attribute(:updated_by, current_user.id) if model.respond_to?(:updated_by)
  end
end

答案 1 :(得分:2)

我能在github上找到一些这样做的插件: