From bd570c5062a0ac499c1c9e3a65dec70aebc7c476 Mon Sep 17 00:00:00 2001 From: Greg Vorobyev Date: Tue, 27 Nov 2018 13:26:00 -0500 Subject: [PATCH] fix polymorphic tenant --- lib/acts_as_tenant/model_extensions.rb | 8 ++++---- spec/acts_as_tenant/model_extensions_spec.rb | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/acts_as_tenant/model_extensions.rb b/lib/acts_as_tenant/model_extensions.rb index 0ce61c2..feffef5 100644 --- a/lib/acts_as_tenant/model_extensions.rb +++ b/lib/acts_as_tenant/model_extensions.rb @@ -136,8 +136,8 @@ def acts_as_tenant(tenant = :account, options = {}) before_validation Proc.new {|m| if ActsAsTenant.current_tenant if options[:polymorphic] - m.send("#{fkey}=".to_sym, ActsAsTenant.current_tenant.class.to_s) if m.send("#{fkey}").nil? - m.send("#{polymorphic_type}=".to_sym, ActsAsTenant.current_tenant.class.to_s) if m.send("#{polymorphic_type}").nil? + m.send("#{fkey}=".to_sym, ActsAsTenant.current_tenant.id) + m.send("#{polymorphic_type}=".to_sym, ActsAsTenant.current_tenant.class.to_s) else m.send "#{fkey}=".to_sym, ActsAsTenant.current_tenant.id end @@ -214,13 +214,13 @@ def validates_uniqueness_to_tenant(fields, args ={}) if instance.new_record? unless self.class.where(fkey.to_sym => [nil, instance[fkey]], field.to_sym => instance[field]).empty? - errors.add(field, 'has already been taken') + errors.add(field, 'has already been taken') end else unless self.class.where(fkey.to_sym => [nil, instance[fkey]], field.to_sym => instance[field]) .where.not(:id => instance.id).empty? - errors.add(field, 'has already been taken') + errors.add(field, 'has already been taken') end end diff --git a/spec/acts_as_tenant/model_extensions_spec.rb b/spec/acts_as_tenant/model_extensions_spec.rb index 36ca37d..111f92c 100644 --- a/spec/acts_as_tenant/model_extensions_spec.rb +++ b/spec/acts_as_tenant/model_extensions_spec.rb @@ -227,14 +227,16 @@ before do @comment.save! @article = Article.create!(id: @project.id, title: 'article title') - @comment_on_article = @article.polymorphic_tenant_comments.create! + ActsAsTenant.with_tenant(@article) do + @comment_on_article = @article.polymorphic_tenant_comments.create! + end end it 'correctly scopes to the current tenant type' do expect(@comment_on_article).to be_persisted expect(@comment).to be_persisted expect(PolymorphicTenantComment.count).to eql(1) - expect(PolymorphicTenantComment.all.first.attributes).to eql(@comment.attributes) + expect(PolymorphicTenantComment.first.attributes).to eql(@comment.attributes) end end