遂にRailsアプリリリース!...エロ動画サイトだけどな!!
RailsアプリケーションはMVCモデルであり、この3つが無いと始まりません。
1.コントローラー
コントローラーを作成するには、下記のコマンドを実行。
script/rails generate controller movie
movieはコントローラー名です。
この時ビューも作成されている。
コントローラー:app/controller/movie.rb
ビュー:app/view/~.html.erb
ビューはmovie.rb内に定義されるアクションに対応して作成されるので、アクションを追加した場合は自分で作成、編集します。
2.モデル
モデルを作るには、
の順で行う。
マイグレーションファイルの生成は以下のように。ここではmovie_id(number)、title(string)のカラムを持つモデルmovieを作成する。
script/rails generate model movie movie_id:number,title:string
コマンドを実行すると、db/migrateの配下に、YYYYMMDDHHMMSS_create_movies.rbが作成される。(create_moviesは指定したモデルの名前で自動的にセットされる。create以外のパターンは後述。)
class CreateMovies < ActiveRecord::Migration def change create_table :movies do |t| t.string :movie_id t.string :title t.timestamps end end end
タイムスタンプは勝手に付く。あとファイルには書いてないけど、idカラムが主キーとして自動的に組み込まれる。
で、このファイルに対してマイグレーションを行うと実際にchangeメソッドの内容が実行され、DB上にテーブルが作成される。
rake db:migrate
マイグレーションはファイル名と現在の(railsアプリ上の)DBバージョンを見て自動的に実行するファイルが選択される。もしもバージョンを指定して実行したい場合は
rake db:migrate VERSION=バージョン(上記で言うYYYYMMDDHHMMSS)
その他のオプションは下記を参照。
参考:rake db:migrate - リファレンス - - Railsドキュメント
さらに、既存のモデルにカラムを追加する等の変更操作を行う場合。次のコマンドはmovieにimageカラムを追加する事を想定。
script/rails generate migration AddImage
すると、db/migrate/YYYYMMDDHHMMSS_add_image.rbのようなファイルが作られる。
が、このファイル自体は中身が空。変更を適用した場合とバージョンを戻した場合の2つのメソッドを自分で定義しておく。
class AddImage < ActiveRecord::Migration def up add_column(:movies,:image,:string,:default => '', :null => false) end def down remove_column(:movies,:image) end end
中身は空と言いましたが、クラス名とup、downのメソッドは既に書かれているかと思います。
ちなみにオプションも載せて見ました。:default=>''はカラムのデフォルト値指定、:null=>falseはNOT NULL制約の設定。trueならNULLでもOK。
後はrake db:migrateを実行するのみです。
マイグレーションの定義は多彩なのでそのたびに調べた方がいいですね。
今日はこのへんで。