酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Active Record 3つのTipsを紹介 [Distinctの実行、結果を配列/Hashで受け取る]

Eye Catch Image 今回はActive Recordに関する3つのTipsを紹介します。

(1) Active RecordでDistinctを実行して結果を受け取る
(2) Active RecordでSQLを実行して、Hashのリストで受け取る
(3) Active Recordで特定のカラムの一覧を配列で受け取る

RailsのActive Recordの使いやすさを身にしみて感じますよ^^


(1) Active RecordでDistinctを実行して結果を受け取る

Active RecordでDistinctを実行する場合は以下で結果を受け取ることができます。 (ユニークな名前の一覧を返してくれます)

1
2
Client.select(:name).uniq
#=> select distinct name from clientsと同じ

(2) ActiveRecordでSQLを実行して、Hashのリストで受け取る

ActiveRecordでSQLを実行して、その結果をHash形式で受け取りたい場合は、次のようにします。

1
2
3
sql = "SELECT * FROM hoge;"
results = ActiveRecord::Base.connection.execute(sql)
results.to_a(:as => :hash) #=> [{hoge: 1, foo: "abc"}, {hoge: 2, foo: "def"}]

(3) Active Recordで特定のカラムの一覧を配列で受け取る

特定のカラムBook.titleを配列で取得したい場合は次のようにします。

1
book_title = Book.where(autor: "荒木飛呂彦").pluck(:title)

Special Thanks

ActiveRecordでのdistinctについて - 黒魔法使いの弟子

ActiveRecord で生SQLを実行し Hash のリストでうけとる

Rails で十分に活用されていなくてもったいない ActiveRecord::Relation のメソッド TOP 10 - 杉風呂2.0 - A Lifelog -

おすすめの書籍