スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Ruby】ActiveRecordによるCRUDの実験(Delete編)

前回の記事(Update編)に引き続きActiveRecordによるDBのCRUD(Create, Read, Update, Delete)のDelete編を書き残して行こうとおもいます。

たびたびお断りしておきますが、テーブル構成、クラス定義などは前回までの記事の物を使わせていただきます。

deleteに関しては今回3つの方法を紹介してみたいと思います。

■インスタンスメソッドdestroyを呼び出す
■クラスメソッドdeleteを呼び出す
■クラスメソッドdelete_allを呼び出す

まず始めにdestroyメソッドの呼び出しによるレコードの削除から見ていきます。

obj = Hoge.find(2)

obj.destroy

この場合idが2のレコードがDBから削除されたことになります。
destroyメソッドが呼び出された時にDBからは削除されていることになりますが、このインスタンスのインスタンス変数などの参照はまだ可能なようです。

destroyメソッドの呼び出し後

puts obj.priority

をしてもちゃんと値が返ってきてます。

しかし、値の変更は許されていないようです。
つまり

obj.priority = 1234

としてもこの処理は例外になるようです。
なおdestroyが実行されるとインスタンスがfreeze状態というものになるためこのようにインスタンスの参照は可能だが、更新は不可能になるそうです。

ちなみにインスタンスがfreeze状態か否かはfrozen?メソッドで確認ができます。

次にdeleteクラスメソッドでの例をみていきます。

Hoge.delete(2)

とすることでidが2のレコードがテーブルから削除されます。

Hoge.delete([4, 9])

とすることでidが4と9のレコードがテーブルから削除されます。

最後にdelete_allクラスメソッドを見てみます。

名前から想像できるように原則すべてをdeleteします。

といっても引数として条件を与えて呼び出すことで条件にマッチしたレコードをDBから削除するという処理になります。
例えば

Hoge.delete_all('priority = 1')

とするとpriorityが1のものをすべて削除するということになります。
さらに複数の条件を組み合わせる場合

Hoge.delete_all('priority = 1 OR message = 'hoge'")

とするとpriorityが1またはmessageが'hoge'となっているレコードをすべて削除することになります。

実はDeleteする方法は他にもありますが、ここでは代表的な3つの方法を書き残しておきました。

今回の記事はActiveRecordによるCRUDのうちのDeleteの実験ということでした。

今回の記事をもってActiveRecordによるCRUDの実験がとりあえずひととおり見れたのかなと思います。
自分でMysqlのAPIを使ってDB操作をしてもいいかもしれませんが、ActiveRecordを使うことで”規約”による縛りがあるため複雑すぎてわかりづらいテーブル構成を作れなくていいし、ありきたりな処理は全部やってくれるし、そもそもO/Rマッパーって扱いやすい。

こんな便利なものがあるので使わない手はないでしょう。
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Ruby  Trackback:0 comment:0 

Comment

comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。