O/R マッパ(Active Record) を使ってみる
Ruby で O/R マッパを使って RDBMS を操作したいです。
Ruby on Rails に付属してくる O/R マッパの Active Record を使ってみます。Rails は元々インストールしていたので、そこから Active Record 単体で使ってみます。
mysql に、
+-------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | | PRI | NULL | auto_increment | | url | varchar(255) | YES | | NULL | | | title | varchar(255) | YES | | NULL | | | description | text | YES | | NULL | | +-------------+------------------+------+-----+---------+----------------+
というテーブルがあります。このテーブルは Active Record を使うつもりで設計したものなので、auto_increment な id カラムを持ち、テーブル名は "items" と複数形にしてあります。
#!/usr/local/bin/ruby require 'rubygems' require 'active_record' class Item < ActiveRecord::Base end ActiveRecord::Base.establish_connection( :adapter => 'mysql', :host => 'localhost', :username => 'rubyo', :password => '', :database => 'bookmark' )
とりあえずこれで、Active Record で bookmark データベースに接続して item テーブルを操作することができます。最初 require 'active_record'
とだけ書いていて、ライブラリが見つからなくて少しはまりました。rubygem を使ってインストールしたライブラリを使うには require 'rubygems'
も併記しておかないといけないようです。
手始めに、
#!/usr/local/bin/ruby require 'rubygems' require 'active_record' class Item < ActiveRecord::Base end ActiveRecord::Base.establish_connection( :adapter => 'mysql', :host => 'localhost', :username => 'rubyo', :password => '', :database => 'bookmark' ) Item.create( :url => 'http://d.hatena.ne.jp/rubyo/', :title => 'るびおの日記', :description => 'るびおのRuby勉強日記' ); Item.create( :url => 'http://d.hatena.ne.jp/rubyco/', :title => 'るびこの日記', :description => 'るびこのRuby勉強日記' ); Item.create( :url => 'http://b.hatena.ne.jp/rubyo/', :title => 'るびおのブックマーク', :description => 'るびおのRuby関連ブックマーク' );
として items に三つのレコードを追加しました。
次に items テーブルに検索系のクエリを投げてみました。
Item.find(:all, :limit => 2, :order => "id desc").each do |item| puts item.url end Item.find(:all, :conditions => "url like '%ruby%'").each do |item| puts item.url end puts Item.count puts Item.count(['title = ?', 'るびおの日記']) Item.find_all_by_title('るびおの日記').each do |item| puts item.url end
この結果は、
http://b.hatena.ne.jp/rubyo/ http://d.hatena.ne.jp/rubyco/ http://d.hatena.ne.jp/rubyo/ http://d.hatena.ne.jp/rubyco/ http://b.hatena.ne.jp/rubyo/ 3 1 http://d.hatena.ne.jp/rubyo/
となりました。Active Record はとても直感的で分かりやすいと思いました。Active Record について詳しくは Rails 本の P.207 から解説がありました。しっかり読んで理解したいと思います。
- 作者: 前田修吾
- 出版社/メーカー: オーム社
- 発売日: 2006/02/25
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 109回
- この商品を含むブログ (207件) を見る