Heroku経由でSinatraを使ってみているのですが、ModelとしてSequelを使ってみることにしました。
Userクラスを作る
DBをオンメモリにしておいて、テーブル作成・クラスの宣言
1 % irb 2 require 'rubygems' 3 require 'sequel' 4 5 DB = Sequel.sqlite 6 DB << "CREATE TABLE users (id INTEGER PRIMARY KEY, name VARCHAR(255) not NULL)" 7 8 class User < Sequel::Mo del 9 end
これから、User.なんとかでデータの作成などできます。
1 User.create(:name => 'satoko') 2 3 User.find(:name => 'satoko') 4 User.find(:id => 1).update(:name => 'satoko') 5 User.find(:id => 1).delete 6 User.first 7 8 User.all 9 => [#<User @values={:name=>"satoko", :id=>1}>] 10 11 DB[:users].filter(:name => 'satoko').sql 12 => "SELECT * FROM `users` WHERE (`name` = 'satoko')"
findは1件操作なので、複数件の場合はfilterで行う
1 User.filter("id > ?", 0).limit(10).each {|u| p[:name]} 2 => #<Sequel::SQ Lite::Data set: "SELECT * FROM `users` WHERE (id > 0)">
また、@orepuriさんに教えてもらったのですが、all、first、eachなどがあって初めてSQLが発行されるそうで、なかなか面白いです
References
Sequel概要(2年前の資料なので、コード的には古いかもしれません)
http://www
チートシート
http://seq
http://che
Classリファレンス:ModelやDatasetなど
http://seq
posted by
satoko
on Wed 16 Sep 2009
at 21:29