【问题标题】:Ruby on rails - Migrate date field in database into 3 integer fields using migrationRuby on rails - 使用迁移将数据库中的日期字段迁移到 3 个整数字段
【发布时间】:2014-08-28 00:52:41
【问题描述】:

我是 RoR 的新手,在迁移方面需要一些帮助。 我有一个现有的数据库,其中包含 mysql 数据库中的“日期”列。 我需要将它们存储到 3 个单独的整数字段(年、月、日期)中(不要问我为什么,因为我的客户是白痴)......并且需要将现有列迁移到新列中(现有数据库已经包含数据)。我只是想知道我怎么能在迁移中做到这一点?

谢谢

【问题讨论】:

    标签: ruby-on-rails-3 migration


    【解决方案1】:

    经过一番挖掘……解决了。 迁移不是执行此操作的首选方式,应使用 rake 任务。

    首先,使用迁移生成新列,然后在模型中添加新的 attr_accessible。

    要生成 rake 任务,请点击 http://railsguides.net/how-to-generate-rake-task/ 链接。

    并使用下面的代码,假设包含日期列的模型名为Visit

    namespace :visit_date_migration do
      desc "Migrate visit date into 3 integer columns for year/month/date"
      task :migrate_date => :environment do
          Visit.all.each do |visit|
              unless visit.visit_date.nil? || visit.visit_date == 0
                  year = visit.visit_date.year
                  month = visit.visit_date.month
                  day = visit.visit_date.day
                  visit.visit_date_year=year
                  visit.visit_date_month=month
                  visit.visit_date_date=day
                  visit.save!
              end
          end
      end
    end
    

    然后像普通任务一样运行 rake 任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 2019-03-30
      • 2012-04-03
      • 2015-07-16
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多