[rails] Magic Multi-Connections
http://magicmodels.rubyforge.org/magic_multi_connections/
via Matzにっき
これはよさげ。なるほど。
サイトにあるデモシナリオだけでも面白そうなんですが、これのポイントは接続先 DB の切替えを before_filter でやってるということも。
つまり action ごとに自動的に接続先 DB を変えたりすることもできそうです。
まぁ自動的に割り振るとかはかっこいいけどいろいろアレなんで、こんな感じ?
class Person def show @earson = Person.find(params[:id]) end def create person = WriteDatabase::Person.new(params[:person]) if person.save redirect_to .. else .. end end end
気になってること
- association の扱いがどうなっているか
- この例で言えば Private のときに association はちゃんと辿れるか?
- ネストしたクラス名に対応できるんだろうか?
- ほんとにアクションごとに変えられるか?
- たぶん、リードとライトを別 DB にするとかも同じ原理でできるんだろうけど、
- before_filter :read_only_access, :except => %w(create update) とか?
class Person before_filter :write_access, :only => %w(create) def show @earson = Person.find(params[:id]) end def create Person.create(params[:person]) end protected def write_access self.extend(WriteDatabase) end end