下準備
テーブルの作成と、モデルの定義。データベースにはオンメモリ SQLite を使います。
require "sequel" DB = Sequel.sqlite DB.create_table :records do primary_key :id Date :date String :summary Float :kcal DateTime :created_at end class Record < Sequel::Model # 便利な検証メソッドを使うために必要 plugin :validation_helpers def validate validates_presence [:summary, :kcal, :date] validates_type String, :summary validates_numeric :kcal end end
データ取得
filter で絞り込み、order で並び替えます。
@records = Record.filter(:date => Date.today) .order(:date.desc, :created_at.desc)
主キーを指定して1件取得する場合、[]を使います。
@record = Record[1]
配列にアクセスしているように見えるのがくせ者。
データ挿入
POST データを検証して保存。
@record = Record.new(params) if @record.valid? @record.save end
create で保存することもできます。
Record.create(:date => params[:date], :summary => params[:summary])
入力検証のこと考えると、save で保存する方が良いかな。
データ更新
POST データを既存のモデルにセットする方法が見つからず苦労したけど、set でなんとか上手くいきました。
@record = Record[id] @record.set({ :summary => params[:summary], :date => params[:date], :kcal => params[:kcal] }) if @record.valid? @record.save end
まとめて更新する方法もあります。
Record.filter(:id => 1..5).update(:summary => "foo")
バッチ処理で使うかも。
データ削除
1件削除。
@record = Record[id] @record.destroy
まとめて削除。
Record.filter(:id => 1..5).destroy
Rails3 の ActiveRecord に慣れてれば習得しやすい
scope じゃないし、メソッド名も違いますが、使い方が似てる。気がします。Rails3 使って開発した経験があれば、Sequel の使い方はすんなり覚える事が出来そうです。経験談。
もっと詳しく勉強したい場合は、下記のドキュメントを読むといいです。