find_or_createでは:order=>が効かない
rails2.3
データベースに、同じ「knumber」と言うコラムの値をを持ったデータが複数ある場合に、 最新の入力データを得たいとする。そして該当データがない時には新規にデータを作成したいとする。 このような時、Railsではfind_or_createという一度に処理てくれる便利なメソッドがあるので、それを使おうとしたが、 次のように書くと、一番古いデータが表示されてどうしてもうまくいかない
@ki=KigyoInfo.find_or_create_by_knumber( kbango, :order=>'input_date DESC')
find_or_createでは:order=>'input_date DESC'が効かないことが、 ./script/consoleを使って調べるとわかった。 しかたがないので、次の様にひとつづつ記述した
@ki=KigyoInfo.find_by_kigyo_number( kbango, :order=>'input_date DESC') if @ki==nil then @ki=KigyoInfo.new(:knumber=>kbango ) end
技術的な覚書きへ戻る
2513
Keyword(s):
References:[技術的な覚書き]