Rails4でhas_manyにオプションつけたいなーと思ったら、ちょっとつまづいてしまったのでめも。
rails3_user_model.rb
has_many :messages, :order =>("created_at DESC")
orderは取得する順序ををいじるやつ。
userが多のメッセージを持っててメッセージを取得する時、作られた逆順、つまり新しいメッセージを最初に取得したい場合、こんな書き方をする。
わけだけれど、
ArgumentError
Unknown key: :order. Valid keys are: :class_name, :class, :foreign_key, :validate
#以下略
怒られる。英語が読めなくてもだいたい意味は分かる。
「order_keyはないよ、あるのはこういうの」ということ。
orderがなくなったのではなく書き方が変わったらしい。
英語が読めなくてもなんとなく分かる。
「lambdaを渡せ」
と。
で、こう書く。
rails4_user_model.rb
has_many :messages, ->{order("created_at DESC") }
あんま詳しくないけどlambda式のことかと思う。
まあとりあえずこれで動く。
includeとかでも上のエラーが出たことあるけど、これで動くんだと思う。
公式には普通に書いてるんだろうなーと思う次第。
英語よめなきゃなー。