• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

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::Model
   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::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

posted by Png satoko on Wed 16 Sep 2009 at 21:29

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry1613
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ