Rails4で条件付きのリレーションを設定する方法

Rails4になってから指定方法が変わって、探すのに苦労したのでメモっときます。

Rails3の場合

has_many :hoge, :conditions => "status = 1"

Rails4の場合

has_many :hoge, -> { where(status: 1) }

『->』ってなんだ

これはruby1.9から、lambdaをこういうふうに書けるようになったそうです。

lambda { |hoge| "hello #{hoge}" }

これを

-> (hoge) { "hello #{hoge}" }

こんな風に書けるそうです。

こちらを参考にさせていただきました。 http://opamp.hatenablog.jp/entry/20110731/1312083714