2005-12-02

_ [ruby][rails] AWDwR (4)

SELECT の後ろに参照・更新したいフィールドを並べて find_by_sql を呼ぶと、 参照・変更したいフィールドだけを持ったモデルのインスタンスが返ってくる、 というのを知る。無駄なオブジェクトを作らないで済むし、 更新時も取ってきたフィールドだけを set するので、 パフォーマンス的には有利。id を含めないと更新はできないみたい。そりゃそうか。

でも、やっぱり SQL 文は長いよ、と思いつつ、active_record/base.rb を読んでると、 find に :select ってのが使えるじゃないですか!デフォルトは "*"、 つまりは、その部分をベタに :select => "id, status, error_count" とか書いとけば OK。

>> pp Product.find(:first)
#<Product:0xb7a63c4c
 @attributes=
  {"image_url"=>"http://localhost:3000/images/097669400X.01.LZZZZZZZ.jpg",
   "date_available"=>"2005-09-22 00:00:00",
   "price"=>"34.95",
   "title"=>"Agile Web Development with Rails",
   "id"=>"1",
   "description"=>
    "Bible for Rails'er.\r\nYou should buy the Japanese translated version as well :).\r\n"}>
>> pp Product.find(:first, :select => "id, title, price")
#<Product:0xb7a510c4
 @attributes=
  {"price"=>"34.95", "title"=>"Agile Web Development with Rails", "id"=>"1"}>

Index で見る限り、AWDwR の時点ではなかった機能なのかな。

…と思ったら、全部書いてあった :)。

でも callback で使ってるのを指定し忘れるワナ。

_ 加湿機

なんか席の後ろの棚に設置されていた。DRY の原則に反するけど、まぁいいや。

んー?つか、最近痛かったノドが、ますます痛くなって、セキと鼻水が止まらないんですが。

_ [debian][webwml] d-i eratta

昼に訳して、夕方投げる。そして DWN はできてないワナ。一人記事二個なのに。

[]