`
woody_420420
  • 浏览: 42066 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

column_timestamp plugin

阅读更多

  有些时候,我们可能需要记录某些列的更新时间,类似于rails的timestamps。手工一一处理稍显繁琐,于是将其抽取出来,写成了一个简单的plugin--column_timestamp,自动记录一些简单列的更新时间。

  •   使用方法

  1.将column_timestamp放到plugins目录。

  2.在表中针对要记录更新时间的列建立一个新列:[column_name]_updated_at。

  3.或者,在migration中使用:column_timestamp => true参数。例如:

 def self.up
    create_table :my_table do |t|
    t.string :name
      t.string :status,:column_timestamp => true
      t.timestamps
    end
  end
  

  这样,rails在执行migration的时候就会自动生成"status_updated_at"列。

  4.OK。开始工作了。每当status的值改变,status_updated_at就会自动记录更新的时间。

  5.如果要停止记录XXX_update_at,只需要在相应的model调用suppress_column_timestamps,例如:

class MyModel < ActiveRecord::Base
  suppress_column_timestamps
  ...
end
  • 版本问题 

  在2.0.2中通过。如果要在2.1+跑,可以将column_timestamp/vendor删除。并且注释column_timestamp/init.rb中的

require File.join(File.dirname(__FILE__),"/vendor/dirty_attr/init")

 

2008.10.15  23:59 星期三

分享到:
评论
4 楼 woody_420420 2008-10-16  
wosmvp 写道

貌似所有Rails中源码都没有column_timestamp这个词……怎么就在migrate里出来了***_updated_at呢


这个我只是简单的扩展了一下migration中使用的方法,如下:
    def column(name, type, options = {})
      _original_column(name, type, options)
      if options[:column_timestamp]
        _original_column("#{name}_updated_at", :datetime)
      end
    end

所以,加上:column_timestamp参数就会自动生成×××_update_at列

wosmvp 写道

column_timestamp.rb
27行中 update_without_column_timestamps,亦没有定义,好像看魔术是的,查看源码,都不方便……

这个,建议查看下rails源代码中alias_method_chain方法。
http://www.iteye.com/topic/249594
3 楼 woody_420420 2008-10-16  
冉翔 写道
BS用rar打包滴。哇咔咔

真是BS无所不在,越BS越精彩~
现在社会都流行啥打包阿~我的winrar装了好几百年了
2 楼 wosmvp 2008-10-16  
   1. def self.up  
   2.    create_table :my_table do |t|  
   3.    t.string :name  
   4.      t.string :status,:column_timestamp => true  
   5.      t.timestamps  
   6.    end  
   7.  end  

貌似所有Rails中源码都没有column_timestamp这个词……怎么就在migrate里出来了***_updated_at呢

column_timestamp.rb
27行中 update_without_column_timestamps,亦没有定义,好像看魔术是的,查看源码,都不方便……
1 楼 冉翔 2008-10-16  
BS用rar打包滴。哇咔咔

相关推荐

    MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数

    在MySQL 5.6中,`TIMESTAMP`数据类型和`explicit_defaults_for_timestamp`参数是数据库管理和时间戳处理的关键元素。`TIMESTAMP`通常用于记录数据记录的创建或修改时间,而`explicit_defaults_for_timestamp`参数则...

    kernel_so_timestamp:内核 SO_TIMESTAMP 功能的示例代码

    kernel_so_timestamp 内核 SO_TIMESTAMP 功能的示例代码包含ku-latency 和 send_data 是一对。 他们提供了一个示例代码来查看 SO_TIMESTAMP 如何提供接收时间戳。 main 提供了一种查看如何获取发送时间戳的方法。...

    MySQL错误TIMESTAMP column with CURRENT_TIMESTAMP的解决方法

    there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause." 这意味着在MySQL 5.5及更早版本中,表中只能有一个TIMESTAMP列具有默认值CURRENT_TIMESTAMP或ON UPDATE CURRENT...

    解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别

    值得注意的是,当UNIX_TIMESTAMP()用于TIMESTAMP列时,它直接返回列的内部时间戳,而不是进行额外的转换。此外,对于超出有效范围(1970年至2037年)的日期,函数可能会返回0,但只进行基本的范围检查。 MySQL还...

    通过实例解析MySql CURRENT_TIMESTAMP函数

    MySQL的CURRENT_TIMESTAMP函数是用于获取当前日期和时间的一个内置函数,它在数据库操作中扮演着重要的角色,特别是在记录数据的创建时间和更新时间上。这个函数的使用非常简单,但其功能却十分实用,能够帮助开发者...

    timestamp_v1.zip_stonetnd_timer_timestamp

    Timestamp程序会创建用户指定数量的线程,每一个线程都将执行一个简单的for循环。每次循环都会读取时钟计数器的值并将其保存到一个数组中。每个线程将这些值保存到各自的数组中。 通过观察timestamp的值,程序可以...

    python UNIX_TIMESTAMP时间处理方法分析

    在Python编程中,UNIX_TIMESTAMP是一种常见的表示时间的方式,它是一个自1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不包括闰秒。在处理时间数据时,理解如何在Python中进行UNIX_TIMESTAMP转换和操作是至关...

    杂项源代码TimeStamp.zip_timestamp

    标题 "杂项源代码TimeStamp.zip_timestamp" 暗示了这是一个包含有关时间戳处理的源代码集合。在编程中,时间戳通常用于记录和处理日期和时间信息,它是一个数值,表示从特定时间(通常是1970年1月1日,即Unix纪元)...

    CTSA White Paper_timestamp_white_

    CTSA(可能是某个组织或项目的缩写)发布的"White Paper_timestamp_white_"白皮书深入探讨了这一主题。在本文中,我们将详细解释时间戳签名以及与其相关的在线证书状态协议(Online Certificate Status Protocol,...

    PostgreSQL更新表时时间戳不会自动更新的解决方法

    modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` 在这个例子中,`modified`字段在插入时会自动设置为当前时间。 3. 创建一个触发器,确保在每次更新表`ts`时调用之前创建的`upd_timestamp`函数。这将在每个...

    timestamp.cr:Crystal-lang 中的时间戳。 将 `.from_timestamp` 和 `#to_timestamp` 方法添加到 `Time`

    安装将其添加到您的项目Projectfile deps do github " waterlink/timestamp.cr "end用法 require " timestamp "从时间戳创建Time : puts Time .from_timestamp( 1427042133.035 ) # =&gt; 2015-03-22 16:35:33从Time...

    JAVA-springMVC-weixin.zip_mvc模式_timestamp nonce_token java_信息互通_

    当我们填好配置信息后微信服务器发起一个GET请求到我们在公众平台配置的服务器url地址,微信方将带上signature,timestamp,nonce,echostr四个参数,我们自己服务器通过拼接公众平台配置的token,以及传上来的...

    mysql多个TimeStamp设置的方法解读

    MySQL中的Timestamp类型是一种用于存储日期和时间的字段类型,它特别适用于记录数据的创建和更新时间。Timestamp在MySQL中有两种常见的特殊属性:默认值为CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP。 1. ...

    数据处理.rar_MATLAB 数据转换_excel_lidar_matlab时间戳_timestamp

    通过matlab读取从传感器中获取到的数据文件(excel格式),将时间戳转换为标准时间

    MySQL 5.6 中TIMESTAMP with implicit DEFAULT value is deprecated错误

    ALTER TABLE your_table MODIFY your_timestamp_column TIMESTAMP DEFAULT CURRENT_TIMESTAMP; ``` 4. **新表创建**: 当创建新的表时,确保为TIMESTAMP字段提供显式的默认值,如`CURRENT_TIMESTAMP`。 注意,...

Global site tag (gtag.js) - Google Analytics