[ruby] Sequelについてメモ
Heroku経由でSinatraを使ってみているのですが、ModelとしてSequelを使ってみることにしました。
###Userクラスを作る
DBをオンメモリにしておいて、テーブル作成・クラスの宣言
shell>>
% irb
require 'rubygems'
require 'sequel'
DB = Sequel.sqlite
DB << "CREATE TABLE users (id INTEGER PRIMARY KEY, name VARCHAR(255) not NULL)"
class User < Sequel::Model
end
<<--
これから、User.なんとかでデータの作成などできます。
shell>>
User.create(:name => 'satoko')
User.find(:name => 'satoko')
User.find(:id => 1).update(:name => 'satoko')
User.find(:id => 1).delete
User.first
User.all
=> [#<User @values={:name=>"satoko", :id=>1}>]
DB[:users].filter(:name => 'satoko').sql
=> "SELECT * FROM users WHERE (name = 'satoko')"
<<--
###findは1件操作なので、複数件の場合はfilterで行う
shell>>
User.filter("id > ?", 0).limit(10).each {|u| p[:name]}
=> #<Sequel::SQLite::Dataset: "SELECT * FROM users WHERE (id > 0)">
<<--
また、@orepuriさんに教えてもらったのですが、all、first、eachなどがあって初めてSQLが発行されるそうで、なかなか面白いです
###References
Sequel概要(2年前の資料なので、コード的には古いかもしれません)
http://www.slideshare.net/zhesto/ruby-off-rails-japanese
チートシート
http://sequel.rubyforge.org/rdoc/files/doc/cheat_sheet_rdoc.html
http://cheat.errtheblog.com/s/sequel/
Classリファレンス:ModelやDatasetなど
http://sequel.rubyforge.org/documentation.html