方針 Rubyを知っている前提です(前回の勉強会の資料 http://dev.ariel-networks.com/articles/workshop/ruby/) RDBの基礎知識が前提です なるべく手を動かして目に見える形で説明を進めます Ruby on Rails(以下、Rails)全体は巨大なので、ActiveRecord(ORM層)に話を限定します(Web層は次回) Webから切り離してirb or コマンドラインでActiveRecordを使います
« PSoC - CY8C29466でUART受信割り込み | メイン | C#3.0 - 任意のウィンドウをアクティブにしてキーコードを送る » 2008年03月15日 ■ RailsなしでActiveRecordだけ使って、SQLiteを読み書きする [Programming&Electronics][Technology] Ruby on Railsが巨大すぎてよくわからないので、とりあえずRailsの中で使われているO/RマッパであるActiveRecordだけ使ってみた。 SQLを使ってオブジェクト指向で書くとき、SQL文を発行して受け取った返り値の配列をオブジェクトに突っ込み直してやらなければならないんだけど、O/R mappingを使うとSQLのデータベースとそこに接続しているプログラム上のオブジェクトが同期できる。 もちろん、プログラム側のオブジェクトで save()など
パターン名と実装名に同じ物が多くてややこしいので、P:パターン、I:実装とする。以下は(※1)、勉強会での話あるいは舞波の認識であるので実際と違っている可能もあり、それによって万が一あなたが被害をどーのーこーの(ry ActiveRecordパターン テーブルとクラスを1:1に対応させるパターン。勉強会参加者はAR(I)に当然馴染みがあるので省略。 DataMapperパターン AR(P)とDM(P)は凄く似ている。パターンとしての違いは、 ARのマッピングは1:1だが、DMは1:n (オブジェクトから見てテーブルをコンポジット可能) DMはスキーマ定義を持つ である。実装的には、AR(I)は機能2をマイグレーションとして持つため、マッピングが1:1であれば完全に同一だと言える。よって、以下のややこしい結論を得る。 AR(P)≠DM(P) であるが AR(I)≒DM(P) てことで、Dat
ActiveRecordオブジェクトは, class Employee < ActiveRecord::Base end とするだけで,上記で言えばemployees表が持つ各種列に対応する属性が利用可能になる。例えば,employees表にname列が定義されていたとすれば, employee.name = ‘Yoichiro’ p employee.name というように,nameアクセッサを利用することができる。とても簡単だ。では, employee.name? とemployeeオブジェクトにメッセージを投げることが可能である人は,どれだけいるだろうか?もちろん僕も,rails-mlに「 [rails:2302] ActiveRecordオブジェクトの属性にクエスチョンをつけると・・・?」という投稿があるまで,知らなかった。 では,「#{attr_name}?」で問い合わせた場合,
webアプリケーションでは、二人以上のユーザーが同じデータを編集中という状況が発生する。その場合、特に対策をとらなければ、最後に送信ボタンを押したユーザーのデータで更新されるはず。しかし、これではお互いの意思を確認できないまま、結果として、先に登録したユーザーのデータが、知らないうちに破棄されてしまうことになるので、あまり良くない。そこで、編集する時に何らかの制御をかける。その制御方法に、以下の二つがある。 悲観的ロック(データ編集を開始した時にロック) 既に誰かが編集中であれば、他の人はそのデータの編集ページを開くことが出来ないようにする。 楽観的ロック(データ更新した時にロック) 編集ページは複数ユーザーで同時に開くことが出来るが、途中で誰かが更新した場合は、その後の更新が制限される。 悲観的ロックが安全確実な気がするが、不要なロックが長時間続いてしまう可能性もあり、厳密過ぎるロックは
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く