作成日と更新日の追加

作成日と更新日の情報を追加してみた。今は必要性は無いのだが、今後よく使いそうな機能になりそうなので。
作業はとても簡単。手順としては、データベースのフィールドにcreated_on、updated_onを追加するだけ。これだけでデータベースに新規追加した時created_onに、更新した時updated_onに、それぞれ日時が自動的に保存される。守るべきことはフィールド名をcreated_on、updated_onと設定するだけ。すごくシンプルな仕組み。
マイグレーションを利用してやってみた。

      • ちなみに、created_at、updated_atでも同じ機能を発揮する。翻訳ページで試してみると、英語の慣習では時刻の時はat、日付や曜日の時はonを使うようだ。Ruby on Railsの中では同じTimeオブジェクトだから、どっちを使っても同じ結果になるのかな?
Generatorsタブ


script/generate migration add_column_created_on の実行。(1でmigrationを選択、2でadd_column_created_onと入力)
実行すると、002_add_column_created_on.rbファイルが作成される。
下記のように、追加する場合、削除する場合それぞれのコーディング。

002_add_column_created_on.rb
class AddColumnCreatedOn < ActiveRecord::Migration
  def self.up
    add_column :softwares, :created_on, :datetime
    add_column :softwares, :updated_on, :datetime
  end

  def self.down
    remove_column :softwares, :created_on
    remove_column :softwares, :updated_on
  end
end

self.upには、変更したい内容を書く。
self.downには、変更を取り消す方法を書く。
このようにして、データベースに対する変更を番号管理されたファイルに記録しておくことで、簡単に任意の状態に戻すことが出来る。(ファイル名先頭の番号はscript/generate migrationで自動発番される。)

Rake Tasksタブ


マイグレーションの設定をしたら、rake migrate の実行。

      • 以前の状態に戻したい場合は、右側のオプション指定でVERSION=001と入力すれば、001_create_softwares.rbで設定した状態に戻る。
      • オプション指定が無くrake migrateの実行だけなら最新の状態、つまりVERSION番号が最大の状態に設定される。
Consoleタブ


フィールドを追加した履歴が表示される。

一覧表示


データベースに追加しただけで、こんな感じで反映される。