acts_as_tenant 0.3.6 → 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
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: