- See commits for changes: https://github.com/citusdata/activerecord-multi-tenant/commits/v1.1.0
- Fix bug introduced in 1.0.3 for delete when table is reference or not distributed
- Ensure that when using object.delete, we set the tenant
- Compatibility with rails 6
- Remove support for rails 4.0 and 4.1
- Fix bug when multiple databases are used
- Ensure current tenant is present before adding tenant id filter in DatabaseStatements
- Fix
RETURNING id
for distributed tables with no primary key - Include fix for partial select described in issue #34.
- When doing a partial select without the tenant like
Project.select(:name).find(project.id)
it would raiseActiveModel::MissingAttributeError (missing attribute: tenant_id)
- When doing a partial select without the tenant like
- Fix queries with joins by including the tenant column when current tenant isn't set
- A common use case is having a filter on the tenant, but
MultiTenant.with
isn't used likeProject.where(account_id: 1).eager_load(:categories)
. This version fixes the ORM call to include in thejoin
:"project_categories"."account_id" = "projects"."account_id"
- A common use case is having a filter on the tenant, but
- Add
MultiTenant.without
to remove already set tenant context in a block #45 Jackson Miller - Fix uninitialized constant X::ActiveRecord::VERSION #42 vollnhals
- Fix find and find_by caching issues
- This builds on work by multiple contributors, and fixes issues where the tenant_id would be cached across different tenant contexts for find and find_by methods. This issue was only present with prepared statements turned on
- Note that the mechanism to solve this is slightly different for Rails 4 and 5:
- Rails 4: Disable any caching for find and find_by methods
- Rails 5: Explicitly add the current_tenant_id into the cache key
- This also ensures that we test both prepared statements on and off on Travis
- Added method to ensure that the current tenant is loaded #49 Stephen Bussey
- This is ideal for fully utilizing the ActiveRecord extensions, as they only take effect when the current tenant is not an ID
- Update loofah and rack to fix security warnings
- Note that loofah is not a direct dependency of the libary, so this only applies when running the test suite
- Remove monkey patch that previously disabled referential integrity (DISABLE/ENABLE TRIGGER ALL) #53 Rémi Piotaix
- This was required for Citus compatibility, but the issue has been fixed in Citus for over a year (citusdata/citus#1080)
- ActiveRecord 5.2 support Nathan Stitt & osyo-manga
- Cast attribute name to a string to avoid double applying tenant clause Ben Olive
- Allow bulk delete/update with subqueries on joins Kyle Bock
- Significant improvements and simplifications of query rewriting
- Drop support for Rails 3.2
- The arel version used in Rails 3.2 has caused more trouble than its worth - it seems less troublesome to ask any users of this library to upgrade to at least Rails 4.0
- Switch back to Relation-based mechanism of hooking into ActiveRecord (this resolves issues for simple queries that didn't get rewritten)
- Query rewriter improvements
- Handle OUTER JOIN correctly
- Correctly rewrite sub-selects
- Model tenant method: Only return cached object if not loaded
- Fix support for inherited model classes that only have
multi-tenant
on a higher level object Aaron Severs #13 - Sidekiq middleware: Don't automatically perform a find for the tenant object for every job Scott Mitchell #14
- Fix automatic inverse of on singular associations Kyle Bock #15
- Fix bug that prevents fast truncate from running Kyle Bock #17
- Query rewriter
- Change hook from per-relation to be pre-SQL statement thats being output
- This should resolve issues where we added conditions in the wrong place
- Use table name to model klass registry
- Change hook from per-relation to be pre-SQL statement thats being output
- Improve tests for activerecord-multi-tenant
- Use lower shard count to speed up tests
- Drop database cleaner dependency
- Write-only mode that enables step-by-step migrations
- Add tenant_id to queries using rewrite instead of default_scope/unscoped Ben Olive
- Query monitor that warns you about missing tenant_id
- Helper for fast truncation
- Sidekiq middleware
- Allow use outside of Rails, e.g. when using Sinatra with ActiveRecord @nathanstitt #5
- Infer multi_tenant setting from parent classes @webandtech #6
- Remove use of global tenant klass variable @webandtech #6
- Support passing ID values to MultiTenant.with directly @webandtech #6
- This effectively deprecates with_id, but we'll keep it around for now
- Remove unnecessary validation for invalid belongs_to association
- Expand with_lock workaround to cover lock! as well
- Enable trigger workaround on Rails 5 as well, otherwise it fails silently
- Tests: Switch to database cleaner truncation strategy to avoid multi-shard transactions
- Avoid warning about multi-column primary keys with Rails 5 #2
- Fix odd bind errors for has_one/has_many through
- Add MultiTenant.current_tenant_id= helper method
- Support blocks passed into the unscoped method (this fixes reload, amongst other issues)
- Make with_lock work by adding workaround for Citus #1236 (SELECT ... FOR UPDATE is not router-plannable)
- Remove dependency on acts_as_tenant - instead copy the code thats necessary
- Fix issue with callbacks having TenantIdWrapper instead of the actual object
- Fix bug in CopyFromClient helper
- Initial release