ユーザ用ツール

サイト用ツール


alpersist:crud

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

alpersist:crud [2019/02/12 00:06] (現在)
ライン 1: ライン 1:
 +====== CRUD ======
 +
 +SQLiteを例に、コントローラ用のmain.rbを使って説明します。
 +
 +この例では、デフォルト(action_index)で全件リストを簡易表示します。
 +
 +<code ruby main.rb>
 +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,​ "<​br>"​
 +    }
 +  end
 +
 +  def action_c()
 +    # データを引数で与えて保存
 +    result = @person.create({ :id=>1, :​name=>"​Yamaguchi",​ :age=>18 })
 +    puts @person.values,​ result, "<​br>"​
 +
 +    # データをアトリビュート(values)に個別に設定してから保存
 +    @person[:​id] = 2
 +    @person[:​name] = "​Ishikawa"​
 +    @person[:​age] = 20
 +    result = @person.create()
 +    puts @person.values,​ result, "<​br>"​
 +
 +    # データをアトリビュート(values)に一度に設定してから保存
 +    @person.values = {:id=>3, :​name=>"​Miyazaki",​ :​age=>​33}
 +    result = @person.create()
 +    puts @person.values,​ result, "<​br>"​
 +  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, "<​br>"​
 +
 +    # createと同様に、valueに一度に設定、個別に設定をしてから
 +    # @person.update() することもできる。
 +  end
 +
 +  def action_d()
 +    # プライマリキーを指定して削除
 +    result = @person.delete({ :id=>1 })
 +    puts @person.values,​ result, "<​br>"​
 +  end
 +end
 +</​code>​
 +
 +
 +
 +===== Create =====
 +
 +<code ruby>
 +  def action_c()
 +    result = @person.create({ :id=>1, :​name=>"​Yamaguchi",​ :age=>18 })
 +</​code>​
 +
 +http://​localhost:​10080/​index.rb?​ctrl=tst&​action=c 等、&​action=c をURL入力欄に手動で追加して、CREATEアクションをテストできます。
 +
 +  * この例では、createメソッドの引数で、保存するデータを与えています。
 +
 +<code ruby>
 +    @person[:​id] = 2
 +    @person[:​name] = "​Ishikawa"​
 +    @person[:​age] = 20
 +    result = @person.create()
 +</​code>​
 +
 +  * データをアトリビュート(values)に個別に設定してから保存する例です。
 +  * createメソッドの引数は、空にします。
 +
 +<code ruby>
 +    @person.values = {:id=>3, :​name=>"​Miyazaki",​ :​age=>​33}
 +    result = @person.create()
 +</​code>​
 +
 +  * 全アトリビュートを一度に指定する例です。
 +
 +
 +
 +===== Read =====
 +
 +<code ruby>
 +  def action_r()
 +    result = @person.read({ :id=>3 })
 +</​code>​
 +
 +http://​localhost:​10080/​index.rb?​ctrl=tst&​action=r 等、&​action=r をURL入力欄に手動で追加して、READアクションをテストできます。
 +
 +  * この例では、readメソッドの引数としてプライマリキーのidを与えて、そのキーを持つレコードを読んでいます。
 +  * 読んだデータは、オブジェクトの@valuesアトリビュートにhashで保存されます。
 +  * @person[:​name] 等、角カッコによるアクセッサも使えます。
 +
 +
 +
 +===== Update =====
 +
 +<code ruby>
 +  def action_u()
 +    result = @person.update({ :id=>1, :age=>20 })
 +</​code>​
 +
 +http://​localhost:​10080/​index.rb?​ctrl=tst&​action=u 等、&​action=u をURL入力欄に手動で追加して、UPDATEアクションをテストできます。
 +
 +  * プライマリキーと更新するデータを含むhashを引数で与えて、レコードを更新します。
 +  * createメソッドと同様に、あらかじめvalueに値を設定してから、update()と引数なしで実行することもできます。
 +
 +
 +
 +===== Delete =====
 +
 +<code ruby>
 +  def action_d()
 +    result = @person.delete({ :id=>1 })
 +</​code>​
 +
 +http://​localhost:​10080/​index.rb?​ctrl=tst&​action=d 等、&​action=d をURL入力欄に手動で追加して、DELETEアクションをテストできます。
 +
 +  * プライマリキーを含むhashを引数で与えて、レコードを削除します。
 +  * createメソッドと同様に、あらかじめvalueに値を設定してから、delete()と引数なしで実行することもできます。
 +
 +
  
alpersist/crud.txt · 最終更新: 2019/02/12 00:06 by hirohito