Ruby on Rails mysql迁移使用Timezone而不是Datetime

时间:2015-08-31 06:43:24

标签: mysql ruby-on-rails datetime ruby-on-rails-4 timestamp

我在mysql表中保留了一个名为

的列
  

starts_at

我的专栏每次都可以使用不同的时区。

我尝试过创建迁移:

def self.up
    create_table :meetings, id: false, force: true do |t|
         t.string       :id
         t.timestamp    :starts_at
    end
end

但我总是以

结束
  

日期时间

列类型

我想强制rails使用timestamp,并使用尝试了所有这些但没有成功

def up
    change_column :meetings, :starts_at, :timestamp
end

这样:

def up
    change_column :meetings, :starts_at, 'timestamp'
end

和此:

 def self.up
    create_table :meetings, id: false, force: true do |t|
         t.string       :id
         t.column       :starts_at, 'timestamp'
    end
end

任何想法?

更新

  

我想将时区保存在数据库记录上,而不是保存在   应用程序配置

2 个答案:

答案 0 :(得分:0)

Rails实际上会为您做出一些决定。 $dataProvider = new ActiveDataProvider([ 'query' => Article::findBySql($myQuery)->all(), 'pagination' => [ 'pageSize' => 10, ], 'sort' => [ ........ ], ]); :timestamp都默认为:datetime,而DATETIME:date分别对应:timeDATE。< / p>

使用Rails,您只需决定是否需要存储日期,时间或两者。

因此,您可以在TIME列中使用:datetime类型。

答案 1 :(得分:0)

在config / application.rb

中查看此示例
class Application < Rails::Application
   config.time_zone = 'Sydney'
   config.time_zone = 'Kuala Lumpur'
   config.active_record.default_timezone = 'Kuala Lumpur'
end

您可以根据需要设置时区,然后将其设置为动态。

以下是所有时区ActiveSupport::TimeZone.all.map(&:name)