====== CRUD ======
SQLiteを例に、コントローラ用のmain.rbを使って説明します。
この例では、デフォルト(action_index)で全件リストを簡易表示します。
require 'al_persist_sqlite'
DSN = "/tmp/datafile.sqlite"
# あらかじめテーブルを作っておいてください。
# create table person(id integer, name text, age integer);
class PersistTestController < AlController
def initialize()
@db = AlPersistSqlite.connect( DSN )
@person = @db.table( "person", :id )
end
def action_index()
@person.all.each {|data|
puts data.values, "
"
}
end
def action_c()
# データを引数で与えて保存
result = @person.create({ :id=>1, :name=>"Yamaguchi", :age=>18 })
puts @person.values, result, "
"
# データをアトリビュート(values)に個別に設定してから保存
@person[:id] = 2
@person[:name] = "Ishikawa"
@person[:age] = 20
result = @person.create()
puts @person.values, result, "
"
# データをアトリビュート(values)に一度に設定してから保存
@person.values = {:id=>3, :name=>"Miyazaki", :age=>33}
result = @person.create()
puts @person.values, result, "
"
end
# キーを指定してデータを読み込み、内部(@values) に保持する。
# 引数には、プライマリキー以外の値が含まれていてもよく、単に無視される。
def action_r()
result = @person.read({ :id=>3 })
if result
puts @person.values
else
puts "Failed"
end
end
def action_u()
# データを引数で与えて更新
result = @person.update({ :id=>1, :age=>20 })
puts @person.values, result, "
"
# createと同様に、valueに一度に設定、個別に設定をしてから
# @person.update() することもできる。
end
def action_d()
# プライマリキーを指定して削除
result = @person.delete({ :id=>1 })
puts @person.values, result, "
"
end
end
===== Create =====
def action_c()
result = @person.create({ :id=>1, :name=>"Yamaguchi", :age=>18 })
http://localhost:10080/index.rb?ctrl=tst&action=c 等、&action=c をURL入力欄に手動で追加して、CREATEアクションをテストできます。
* この例では、createメソッドの引数で、保存するデータを与えています。
@person[:id] = 2
@person[:name] = "Ishikawa"
@person[:age] = 20
result = @person.create()
* データをアトリビュート(values)に個別に設定してから保存する例です。
* createメソッドの引数は、空にします。
@person.values = {:id=>3, :name=>"Miyazaki", :age=>33}
result = @person.create()
* 全アトリビュートを一度に指定する例です。
===== Read =====
def action_r()
result = @person.read({ :id=>3 })
http://localhost:10080/index.rb?ctrl=tst&action=r 等、&action=r をURL入力欄に手動で追加して、READアクションをテストできます。
* この例では、readメソッドの引数としてプライマリキーのidを与えて、そのキーを持つレコードを読んでいます。
* 読んだデータは、オブジェクトの@valuesアトリビュートにhashで保存されます。
* @person[:name] 等、角カッコによるアクセッサも使えます。
===== Update =====
def action_u()
result = @person.update({ :id=>1, :age=>20 })
http://localhost:10080/index.rb?ctrl=tst&action=u 等、&action=u をURL入力欄に手動で追加して、UPDATEアクションをテストできます。
* プライマリキーと更新するデータを含むhashを引数で与えて、レコードを更新します。
* createメソッドと同様に、あらかじめvalueに値を設定してから、update()と引数なしで実行することもできます。
===== Delete =====
def action_d()
result = @person.delete({ :id=>1 })
http://localhost:10080/index.rb?ctrl=tst&action=d 等、&action=d をURL入力欄に手動で追加して、DELETEアクションをテストできます。
* プライマリキーを含むhashを引数で与えて、レコードを削除します。
* createメソッドと同様に、あらかじめvalueに値を設定してから、delete()と引数なしで実行することもできます。