acts_as_tenant 0.3.6 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MmNiZWQ1ZWI4YWU2Y2M4YTMxNjRiN2RkYTA0MzNkN2VkZTRhNTczOA==
4
+ NzI5YTBmNmY5NjY3MDFmYjU5MzcxZjY3NzU4NjMwNzMxOGM3MTgzZg==
5
5
  data.tar.gz: !binary |-
6
- YzUzZmVmOTdhY2NlZDQ3NGMxZWRjMDYxY2RjODBmOWE1MjJlOTRiMA==
6
+ OTExMzUxY2U4YjYzMzcwOTExNjk0MzRhMWRkNjAxOTU1Y2Y5YmYyMQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzhmYWY4NmY3ZTkxZjE0MTIzZjdlYjc2ZTI5ZmFhMWI0OGEzZmRhYzFmYjQ3
10
- ODhiMmVmMmE0MTFiYjBiZTQyODg1ZTU3MzRiMzZmNmJmMzYwYzZkMTI1OGJi
11
- ZDRjODllOWMzNmVhZmUxNmFkMmM1MjRjNDhmZjU4MTc3Y2YyMjQ=
9
+ OTZmZThmMDZlYTg5OWU1YzBkOTQ1NjdmNWJhYjE2MjI4MjJhYzU5OGRkYWJk
10
+ ZTg0OGQwNWNjZTBkNDdiMGFkNDIzOTRmODNmOWNhNzEzY2E2YTZhODk5ZDIz
11
+ ZjRiMmY0OWJjNTI0ZDA1MTQ1M2Y2ZTdjMzFhMTAxZDMzNzlhZDQ=
12
12
  data.tar.gz: !binary |-
13
- NmU4NjEzZGQyOGQ5ZTk2MzgyMzMyYjRmMDczNGIwOTQ4NDA4YTNmNzc0MTU4
14
- ZDc5M2UwNDMzMTI5YmExN2I1MjRhYTgxMDgyYjI0MjY3OWZkNjgyOTQxOGMw
15
- MzYyNThlNjhiMTM2YTdhZTQ0NzQ4ODQxZDUzYTZlNTNhM2YyNzQ=
13
+ OWYzNzlkODkyM2EyMTMxN2MxMjY1ZWRmZDVhN2UxZjIxOTNmMzYzMjJlNTdj
14
+ ODMxNTdmMWMxZTJlODcyNmIwNzM4YjUxOTMyYWE0M2M0MTM2M2Y1ZDZmZTY2
15
+ MDBjMWRiNGRiY2M4ZTViZjZhMDc5MDMxMjVlMWJmMWY5OGQwNTc=
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ 0.3.7
2
+ -----
3
+ * Fix for proper handling of polymorphic associations (thx sol1dus)
4
+ * Fix fefault scope to generate correct sql when using database prefix (thx IgorDobryn)
5
+ * Added ability to specify a custom Primary Key (thx matiasdim)
6
+ * Sidekiq 3.2.2+ no longer supports Ruby 1.9. Locking Sidekiq in gemspec at 3.2.1.
7
+ * Update RSPEC to 3.0. Convert all specs (thx petergoldstein)
8
+ * support sidekiq 3 interface (thx davekaro)
9
+
1
10
  0.3.6
2
11
  -----
3
12
  * Added method `set_current_tenant_by_subdomain_or_domain` (thx preth00nker)
@@ -28,5 +28,5 @@ Gem::Specification.new do |s|
28
28
  s.add_development_dependency('database_cleaner')
29
29
  s.add_development_dependency('sqlite3')
30
30
 
31
- s.add_development_dependency('sidekiq', '>= 3.0')
31
+ s.add_development_dependency('sidekiq', '3.2.1')
32
32
  end
@@ -53,7 +53,7 @@ module ActsAsTenant
53
53
  if ActsAsTenant.configuration.require_tenant && ActsAsTenant.current_tenant.nil?
54
54
  raise ActsAsTenant::Errors::NoTenantSet
55
55
  end
56
- where({"#{self.table_name}.#{fkey}" => ActsAsTenant.current_tenant.id}) if ActsAsTenant.current_tenant
56
+ where(fkey.to_sym => ActsAsTenant.current_tenant.id) if ActsAsTenant.current_tenant
57
57
  }
58
58
 
59
59
  # Add the following validations to the receiving model:
@@ -66,11 +66,15 @@ module ActsAsTenant
66
66
  end
67
67
  }, :on => :create
68
68
 
69
+ polymorphic_foreign_keys = reflect_on_all_associations.select do |a|
70
+ a.options[:polymorphic]
71
+ end.map { |a| a.foreign_key }
72
+
69
73
  reflect_on_all_associations.each do |a|
70
- unless a == reflect_on_association(tenant) || a.macro != :belongs_to || a.options[:polymorphic]
74
+ unless a == reflect_on_association(tenant) || a.macro != :belongs_to || polymorphic_foreign_keys.include?(a.foreign_key)
71
75
  association_class = a.options[:class_name].nil? ? a.name.to_s.classify.constantize : a.options[:class_name].constantize
72
76
  validates_each a.foreign_key.to_sym do |record, attr, value|
73
- record.errors.add attr, "association is invalid [ActsAsTenant]" unless value.nil? || association_class.where(:id => value).present?
77
+ record.errors.add attr, "association is invalid [ActsAsTenant]" unless value.nil? || association_class.where(association_class.primary_key.to_sym => value).present?
74
78
  end
75
79
  end
76
80
  end
@@ -1,3 +1,3 @@
1
1
  module ActsAsTenant
2
- VERSION = "0.3.6"
2
+ VERSION = "0.3.7"
3
3
  end
@@ -52,6 +52,12 @@ ActiveRecord::Schema.define(:version => 1) do
52
52
  t.column :accountID, :integer
53
53
  end
54
54
 
55
+ create_table :comments, :force => true do |t|
56
+ t.column :commentable_id, :integer
57
+ t.column :commentable_type, :string
58
+ t.column :account_id, :integer
59
+ end
60
+
55
61
  end
56
62
 
57
63
  # Setup the models
@@ -100,6 +106,12 @@ class CustomForeignKeyTask < ActiveRecord::Base
100
106
  validates_uniqueness_to_tenant :name
101
107
  end
102
108
 
109
+ class Comment < ActiveRecord::Base
110
+ belongs_to :commentable, polymorphic: true
111
+ belongs_to :task, -> { where(comments: { commentable_type: 'Task' }) }, foreign_key: 'commentable_id'
112
+ acts_as_tenant :account
113
+ end
114
+
103
115
  # Start testing!
104
116
  describe ActsAsTenant do
105
117
  after { ActsAsTenant.current_tenant = nil }
@@ -251,6 +263,17 @@ describe ActsAsTenant do
251
263
  it { expect(AliasedTask.create(:name => 'foo', :project_alias => @project2).valid?).to eq(true) }
252
264
  end
253
265
 
266
+ describe "It should be possible to use associations with foreign_key from polymorphic" do
267
+ before do
268
+ @account = Account.create!(name: 'foo')
269
+ ActsAsTenant.current_tenant = @account
270
+ @project = Project.create!(name: 'project', account: @account)
271
+ @comment = Comment.new commentable: @project, account: @account
272
+ end
273
+
274
+ it { expect(@comment.save!).to eq(true) }
275
+ end
276
+
254
277
  # Additional default_scopes
255
278
  describe 'When dealing with a user defined default_scope' do
256
279
  before do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_tenant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erwin Matthijssen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-14 00:00:00.000000000 Z
11
+ date: 2014-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: request_store
@@ -98,16 +98,16 @@ dependencies:
98
98
  name: sidekiq
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ! '>='
101
+ - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: '3.0'
103
+ version: 3.2.1
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ! '>='
108
+ - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: '3.0'
110
+ version: 3.2.1
111
111
  description: Integrates multi-tenancy into a Rails application in a convenient and
112
112
  out-of-your way manner
113
113
  email: