-
Notifications
You must be signed in to change notification settings - Fork 1
Epictetus/acts_as_multi_connection
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
ActsAsMultiConnection ===================== this plugin enables to hash partitioning table Example ======= == database.yml == production: adapter: sqlite3 database: db/production.sqlite3 sub: sub_0: adapter: sqlite3 database: db/production/sub0.sqlite3 sub_1: adapter: sqlite3 database: db/production/sub1.sqlite3 ==== if you want to part 'cities' table by country_id, == model == class City << ActiveRecord::MultiConnection def connection_hash if country_id < 100 :sub_0 else :sub_1 end end def self.connection_hash_by_sql(sql) match = sql.match /country_id\s*=\s*(\d+)/ if match if match[1].to_i < 100 :sub_0 else :sub_1 end else connection end end end City.find(:all, :conditions => ["country_id = ?", 120]) wil connect to 'db/production/sub1.sqlte3' City.new(:country_id => 120).save will write on 'db/production/sub1.sqlite3' == Transaction == you can use transaction only in same connection with using instance. city = City.find(:first, :conditions => ['country_id = ?', 120]) city.transaction do city.name = 'other name' city.save! foo.name = 'xxx' foo.save! raise end if city and foo is same connection, each changes should rollback. but if foo is other connection, foo's change will be commited. NOT YET IMPLEMENTED =================== * (instance method) reload method is not implemented * ONLY rake db:migrate can migrate all databases * OTHER commands are not implemented Copyright (c) 2010 masarakki <[email protected]>, released under the MIT license
About
rails plugin to use hash_partitioning table
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published