[前][次][番号順一覧][スレッド一覧]

rails:1961

From: しろくま <dev@c...>
Date: Wed, 17 Jan 2007 15:31:09 +0900
Subject: [rails:1961] Re: マイグレーションにおけるmysqlのtimestamp型

しろくまです。

> あとRailsにはupdated_at というマジックカラムがあり、カラム名は強制されま 
> すが
> 代用可能なので、こっちを使えってことなのではないかと思います。
> 
>   def self.up
>     create_table :tests do |t|
>       t.column 'updated_at', :datetime
>     end
>   end
> 
> どちらにしろあまり良い仕様とは言えない気もします。
> どうしてもtimestamp型を使いたい場合は、migratoinの抽象表現を捨てて
> テーブル作成するしかないと思います。

そんなカラムがあるんですね・・・知りませんでした・・・
とりあえずupdate_at、create_atを使ってみようと思います。

> とここまで書いてる内に舞波さんがチケットを見つけてくれました。
> http://dev.rubyonrails.org/ticket/4351
> 
> どうやら、このチケットはすでにDHHによって明確にwontfixされてしまったよう 
> です。
> 詳しい理由は上記チケットのページを読んでもらえればわかりますが、
> 結論としては代わりにマジックカラムを使えということみたいです。

timestamps are a bad idea.
なるほどw

ありがとうございます。大変参考になりました。

> On 2007/01/16, at 12:35, しろくま wrote:
> 
>> しろくまです。
>>
>> 素朴な疑問なのですが・・・
>>
>> migrationを使って、テーブルを作成しようと、
>>
>>   def self.up
>>     create_table :tests do |t|
>>       t.column :last_update, :timestamp
>>     end
>>   end
>>
>> こんな感じで定義してみたのですが、実際にmysql上にできるテーブルで、
>> last_update カラムはDATETIME型になります。
>>
>> 少し調べてみたところ、
>> activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb 
>>
>> にある、native_database_types というメソッド内に定義されたHashで、型名を
>> シンボルからデータベースのカラムタイプ名に変換しているようです。
>> (現在、私はmysqlを使用しています。)
>>
>> {
>> ・・・
>> :timestamp   => { :name => "datetime" },
>> ・・・
>> }
>>
>> こんな感じになっています。
>>
>> ここでふと思ったのですが、何故あえて(?)timestamp型は使用していないの
>> でしょうか?
>>
>> timestamp型を使用することが推奨されていない等、何か事情があるのでしょ 
>> うか?
>>
>>
>> -- 
>> ML: rails@r...
>> 使い方: http://QuickML.com/
> 
> 
> -- 
> ML: rails@r...
> 使い方: http://QuickML.com/
> 



--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      1955 2007-01-16 04:35 [dev@c...            ] マイグレーションにおけるmysqlのtimestamp型
      1956 2007-01-16 09:16 ┗[toykyo@t...         ]                                       
->    1961 2007-01-17 07:31  ┗[dev@c...            ]                                     
      1962 2007-01-18 04:39   ┗[ohashi@s...         ]