RoRでモデルとテーブルを作成
Ruby on Rails 3.0 日記の第5回に進みました。
書いてあるのをまねして実行していくだけ。
モデルの作成
$ rails generate model task name:string due_date:date done:boolean invoke active_record create db/migrate/20110510161130_create_tasks.rb create app/models/task.rb invoke test_unit create test/unit/task_test.rb create test/fixtures/tasks.yml
いくつかファイルができました。中身を見てみます。
★db/migrate/20110510161130_create_tasks.rb
class CreateTasks < ActiveRecord::Migration def self.up create_table :tasks do |t| t.string :name t.date :due_date t.boolean :done t.timestamps end end def self.down drop_table :tasks end end
★app/models/task.rb
class Task < ActiveRecord::Base end
★test/unit/task_test.rb
require 'test_helper' class TaskTest < ActiveSupport::TestCase # Replace this with your real tests. test "the truth" do assert true end end
★test/fixtures/tasks.yml
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html one: name: MyString due_date: 2011-05-10 done: false two: name: MyString due_date: 2011-05-10 done: false
たぶん開発用のテーブル作成
$ rake db:migrate (in /home/ec2-user/nchak) == CreateTasks: migrating ==================================================== -- create_table(:tasks) -> 0.0012s == CreateTasks: migrated (0.0013s) ===========================================
これでテーブルができたらしいです。
初期データの投入
サイトに書かれている通りにファイルを作りました。
★db/seeds.rb
table_names = %w(tasks) table_names.each do |table_name| path = "#{Rails.root}/db/seeds/#{Rails.env}/#{table_name}.rb" require(path) if File.exist?(path) end
★db/seeds/development/tasks.rb
Task.create(:name => "Task 0", :due_date => Date.today, :done => true) 1.upto(9) do |n| Task.create(:name => "Task #{n}", :due_date => n.days.from_now, :done => false) end
tasks.rbを書き換えるとCSVからデータを読み込んで登録するというようなこともできそうですね。
次のコマンドを実行してデータの投入。
[ec2-user@ip-10-150-182-92 nchak]$ rake db:seed (in /home/ec2-user/nchak)
なんかもうちょっと投入している感が伝わってくるような出力があっても良いのではないかと思ってしまいました。