LoginSignup
36
34

More than 5 years have passed since last update.

Rails4 has_manyとかのオプションについて

Posted at

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とかでも上のエラーが出たことあるけど、これで動くんだと思う。

公式には普通に書いてるんだろうなーと思う次第。
英語よめなきゃなー。

36
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
34