[Rails] 複数のモデルに with_scope。
こんにちわ。ばたっちです。
複数のモデルに対してあるカラムでフィルタリングしたい(ローカライズとか)と思って、ActiveRecordの with_scopeを調べてみました。
Rails 2.0からは with_scopeは protectedメソッドになっていて、外部からはそのままでは呼べなくなったんですね。
コントローラのフィルタを使う scoped_accessというプラグイン(舞波さん製)を使うのが主流なのかな?
scoped_access
http://wota.jp/svn/rails/plugins/branches/stable/scoped_access
http://wota.jp/ac/?date=20060105
どうも、複数モデルにまたがってスコープかけるという話はなさそうで、コントローラのフィルタにしてしまうのもピンとこない。
やりたいことはこんなカンジ。
- 複数モデルにまたがって with_scopeしたい。
- モデル外(コントローラとか)からスコープを指定したい。
- モデル内で sessionは見たくない。
- スコープ範囲のブロックを細かく指定したい。(旧バージョンの AR#with_scopeを直接呼ぶイメージ)
中身は scoped_accessを参考にしてます。
たとえば、こんなカンジで使うことを想定。
複数モデルに ローカライズを行う例です。
すでにある方法でうまくできるのかもしれないんだけど。。A^^;