メイン

[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^^;

トラックバック

このエントリーのトラックバックURL:
http://pw.tech-arts.co.jp/cgi-bin/tamt32/mt-tb.cgi/72

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)