0

私はRubyonRails Webアプリケーションに取り組んでおり、Projectモデルの2つのフィールドのタイプを変更することに興味があります。モデルを作成したときに、2つのフィールド(start_timeおよびend_time)にint型を指定し、それを日付/時刻型に変更したいと思います。

私はチームで作業しているので(そしておそらくこの方法でそれを行うのが正しいため)、を使用してこれらのフィールドタイプを変更したいと思いますrake db:migrate。これを行うためのファイルをどのように作成しますか?Ruby / Railsに存在する最良の(または唯一の)日付/時刻タイプは何ですか?

4

1 に答える 1

1

以下を実行script/rails generate migration UpdateTimeFieldsして使用します。(方法もありますがchange_column、データを保持したまま、int列をdatetime列に変更できるとは思いません)。

class UpdateTimeFields < ActiveRecord::Migration
  def self.up
    rename_column :projects, :start_time, :old_start_time
    rename_column :projects, :end_time, :old_end_time
    add_column :projects, :start_time, :datetime
    add_column :projects, :end_time, :datetime

    # If applicable, insert code to iterate through your existing
    # records and update the new start_time and end_time fields
    # based on your int data.

    remove_column :projects, :old_start_time
    remove_column :projects, :old_end_time
  end

  def self.down
    # do the opposite of above: rename the datetime fields, create the int
    # fields again, migrate the data back into the int fields, and delete
    # the datetime fields.
  end
end
于 2011-01-19T15:23:31.710 に答える