Merbをつかってみる〜DataMapper編〜
前回のエントリでも書いたけど、merb-gen resourceを発行しても作られるのは
- View
- Model
- Controler
- Spec
だけです。
% merb-gen resource hoge:string,huga:text Loading 〜省略〜 [ADDED] spec/models/hoge:string,huga:text_spec.rb [ADDED] app/models/hoge:string,huga:text.rb [ADDED] spec/requests/hoge:string,huga:texts_spec.rb [ADDED] app/controllers/hoge:string,huga:texts.rb [ADDED] app/views/hoge:string,huga:texts/index.html.erb [ADDED] app/views/hoge:string,huga:texts/show.html.erb [ADDED] app/views/hoge:string,huga:texts/edit.html.erb [ADDED] app/views/hoge:string,huga:texts/new.html.erb [ADDED] app/helpers/hoge:string,huga:texts_helper.rb resources :hoge:string,huga:texts route added to config/router.rb
そう、Migrationのファイルが生成されないんですよね。
ARと違ってDataMapperはModelからDBの形を考えるみたいです。
ARでMigrationファイルに書いていたことはModelに書いてます。
(一応ARみたいにMigrationファイルからマイグレーションもサーポートしている。)
というわけでModelの書き方をわかるとこだけまとめてみた。
項目の定義方法
property :項目名, 型, その他
型で使えるもの
- Boolean
- String
- Text
- Float
- Fixnum, Integer
- BigDecimal,
- DateTime, Date, Time
- Object
- Discriminator
以下はinclude DM-Typesすると使えるらしい(もしかするとMerbだとそのまま使えるかも?)
その他でできること
項目へのアクセス制限
- :accessor => :privateとか:accessor => :protectedとか
- :accessorのほかには:writerとか:readerがある
項目の属性
- :key→主キーにする
- :serial →自動採番する(型はいらない)
- :lazy →遅延読み込み
- :nullable →nullは許すか
その他
- :default →デフォルト値を設定
- :field →テーブルカラムを指定
- :index →インデックスを作成
関連の定義方法
1対Nの関連の場合
1の方は
has n, :piyo
を書いとく
ちなみにpiyoはNのテーブル名
Nの方は
belongs_to :foo
ほかにもできることがかなりあるので調べたら順次追記します