ル微王徴

モデルを定義する

最終更新:

rubyocho

- view
メンバー限定 登録/ログイン

モデルを定義する

一般的なRailsのプログラム

  • データの形式を決めてモデルを作る
  • コントローラで処理するプログラムを書く
  • script/generate で自動生成
    ./script/generate
    Usage: ./script/generate generator [options] [args]
    Rails Info:
       -v, --version    Show the Rails version number and quit.
       -h, --help       Show this help message and quit.
    General Options:
       -p, --pretend    Run but do not make any changes.
       -f, --force      Overwrite files that already exist.
       -s, --skip       Skip files that already exist.
       -q, --quiet      Suppress normal output.
       -t, --backtrace  Debugging: show backtrace on errors.
       -c, --svn        Modify files with subversion.
                        (Note: svn must be in path)
    Installed Generators
       Builtin: controller, integration_test, mailer, 
       migration, model, observer, plugin, resource,
       scaffold, scaffold_resource, session_migration,
       web_service
     
    More are available
                  at http://rubyonrails.org/show/Generators
     1. Download, for example, login_generator.zip
     2. Unzip to directory /home/sawa/.rails/generators/login
        to use the generator with all your Rails apps
        or to /home/sawa/memo/generators/login
        to use with this app only.
     3. Run generate with no arguments for usage information
          ./script/generate login
    
    Generator gems are also available:
     1. gem search -r generator
     2. gem install login_generator
     3. ./script/generate login
    

Memoモデルの項目と型

  • Memoモデルの項目と型
    名前 説明
    title string タイトル
    body text 本文
    created_at datetime 作成時間
    update_at datetime 更新時間

Memoモデルをgenerateする

./script/generate model memo \
   title:string \
   body:text \
   created_at:datetime \
   update_at:datetime
     exists  app/models/
     exists  test/unit/
     exists  test/fixtures/
     create  app/models/memo.rb
     create  test/unit/memo_test.rb
     create  test/fixtures/memos.yml
     create  db/migrate
     create  db/migrate/001_create_memos.rb

app/models/memo.rb

class Memo < ActiveRecord::Base
end
  • Memoクラスを定義

テーブル定義 db/migrate/001_create_memos.rb

class CreateMemos < ActiveRecord::Migration
 def self.up
   create_table :memos do |t|
     t.column :title, :string
     t.column :body, :text
     t.column :created_at, :datetime
     t.column :update_at, :datetime
   end
 end
 
 def self.down
   drop_table :memos
 end
end
  • def self.up メソッド
    • このVerを有効にするときにCallされる
    • Memoモデルに対応するテーブルを定義
  • def self.down メソッド
    • このVerを取り消す時にCallされる

マイグレーション

  • DBのTableのバージョンなどを管理する
  • テーブルを定義したファイルをmigrate DIRにバージョンごとに持つ
  • rake:db:migrate コマンドで、いつでも好きなバージョンに戻せる

db/migrate/001_create_memos.rb を実行する

rake db:migrate
(in /home/sawa/memo)
== CreateMemos: migrating ====
-- create_table(:memos)
  -> 0.0405s
== CreateMemos: migrated (0.0413s) =====
  • テーブル memos が作られる

RailsとRubyとSQLiteの型

  • RailsとRubyとSQLiteの型
    Rilsの型 Rubyの型 SQLiteの型
    string String varchar(255)
    text String text
    integer Fixnum integer
    float Float float
    datetime Time datetime
    timestamp Time datetime
    time Time datetime
    datetime Date date
    binay String blob
    boolean Object boolean
ウィキ募集バナー