スポンサーサイト

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

Tag:スポンサー広告 

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

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

Updateに関しては大きく分けて5つのやり方があります。
■更新したいレコードのインスタンスを生成してインスタンス変数を直接更新してsaveする
■update_attributeメソッドを使う
■update_attributesメソッドを使う
■updateクラスメソッドを使う
■update_allメソッドを使う

まず始めにsaveメソッドを使ってDBのUpdateをする方法をまとめて行きたいと思います。

obj = Hoge.find(3)
obj.priority = 100
if obj.save
    puts 'Success!'
else
    puts 'Failed!'
end

Read編でも紹介したやり方でまずはidが3のレコードを取得しています。
その次にpriorityを100に変更してsaveメソッドを呼び出しています。
Create編でも紹介したのと同じようにsaveメソッドの返り値によりDBの更新の成否を判断しています。

次にupdate_attributeメソッドによる更新方法を見て行きたいと思います。

obj = Hoge.find(2)
if obj.update_attribute(:priority, 29)
    puts 'Success! on attribute method'
else
    puts 'Failed! on attribute method'
end

今度はidが2のレコードのpriorityを29に更新してます。
ここではupdate_attributeメソッドの返り値をみて更新の成否の判断をしてます。

似ていますが微妙に違うupdate_attributesメソッドによる更新方法を紹介します。メソッド名を見ても分かる通り今度は複数のattributeをupdateするメソッドになります。

obj = Hoge.find(10)
if obj.update_attributes(:priority => 10, :message => 'change!')
    puts 'Success! on attributes method'
else
    puts 'Failed! on attributes method'
end

ここではidが10のレコードのpriorityを10に、messageをchange!に更新してますね。既に実験済みですが、もちろんupdate_attributesメソッドに変更するattributeを一つだけ渡しても更新してくれます。
例えば

obj.update_attributes(:priority => 29)

こんな感じでも使えます。

次はupdateクラスメソッドになります。

Hoge.update(2, :priority => 10, :message => 'aaaaaaa')

ここではidが2のレコードのpriorityを10に、messageをaaaaaaaに変更していますね。

最後にupdate_allメソッドになります

Hoge.update_all("priority = 2");

とすればhogesテーブルにあるレコードすべてのpriorityを2に更新することになります。

Hoge.update_all("priority = 2", 'id = 4');

とするとidが4のレコードのpriorityを2に更新することになります。

以上ActiveRecordによるレコードのUpdateの方法になります。
どうやらいろいろなプローチ方法がありそうですが、適時使い分けて行けたらとおもいます。
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。