2014-08-28 73 views
0

我是RoR的新手,需要一些遷移幫助。 我有一個現有的數據庫,包含一個MySQL數據庫中的「日期」列。 我需要將它們存儲到3個獨立的整數字段(年,月,日)(不要問我爲什麼,因爲我的客戶是白癡)...並需要將現有列遷移到新列(現有數據庫已經包含數據)。我只是想知道如何在遷移中做到這一點?Ruby on rails - 使用遷移工具將數據庫中的日期字段遷移到3個整數字段

謝謝

回答

0

經過一番挖掘......解決了它。 遷移不是這樣做的首選方式,應使用rake任務。

首先,使用遷移生成新列,而不是在模型中添加新的attr_accessible。

要生成rake任務,請按照http://railsguides.net/how-to-generate-rake-task/鏈接。

,並使用下面的代碼,假設包含日期列的模型被稱爲訪問

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任務像一個正常的任務。