ActiveRecordメモ

使ってるけど、意外と知らなかったのでメモ

抽出方法は全部同じ


whereの条件指定の方法ですね。

以下の3つは、全て同じSQLを発行します

1.Hashで条件設定する方法(AR独自チックな感じで大体使う方法)

1
Hoge.where(:title => "title", :id => 1)

2.プレースホルダで地道にパラメータ設定する方法(どの言語でも通用する)

1
Hoge.where("title = ? and id = ?", "title1", 1)

3.シンボルで対応付けをわかりやすくする方法

1
Hoge.where("title = :title and id = :id", {:title => "title", :id =>1})

抽出結果がなかったらレコードの新規作成をする


これ、一発でできるメソッドあったんですね。
知らなかった。。。

どうやらfirst_or_createというメソッドを使えばよいみたい。
で、ブロックを取ることができるので、ブロック内で挿入する値を自由に設定できる

以下のような感じで書くとできる模様。

1
2
3
Hoge.where(:title => "title").first_or_create do |p|
    p.body = "hogehoge"
end

結局は裏で2回SQL発行してるだけなんですけどね。(selectとinsert)

と、まぁ色々とありますがこんなところで。