From 03c1473cdda55c94227ac9c4bd8a011e356a32b9 Mon Sep 17 00:00:00 2001 From: Savater Sebastien Date: Wed, 11 Dec 2013 16:20:23 +0100 Subject: [PATCH 1/3] Use scoped to avoid sql query execution --- lib/cancan/controller_resource.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/cancan/controller_resource.rb b/lib/cancan/controller_resource.rb index 702fbcfb..727cd90d 100644 --- a/lib/cancan/controller_resource.rb +++ b/lib/cancan/controller_resource.rb @@ -177,7 +177,9 @@ def collection_instance def resource_base if @options[:through] if parent_resource - @options[:singleton] ? resource_class : parent_resource.send(@options[:through_association] || name.to_s.pluralize) + base = @options[:singleton] ? resource_class : parent_resource.send(@options[:through_association] || name.to_s.pluralize) + base = base.scoped if base.respond_to? :scoped + base elsif @options[:shallow] resource_class else From 7d9a2d6795b24d847c9d74622874682569357832 Mon Sep 17 00:00:00 2001 From: Savater Sebastien Date: Thu, 12 Dec 2013 08:37:25 +0100 Subject: [PATCH 2/3] Avoid deprecation warning with AR 4 --- lib/cancan/controller_resource.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cancan/controller_resource.rb b/lib/cancan/controller_resource.rb index 727cd90d..24bc76e4 100644 --- a/lib/cancan/controller_resource.rb +++ b/lib/cancan/controller_resource.rb @@ -178,7 +178,7 @@ def resource_base if @options[:through] if parent_resource base = @options[:singleton] ? resource_class : parent_resource.send(@options[:through_association] || name.to_s.pluralize) - base = base.scoped if base.respond_to? :scoped + base = base.scoped if defined?(ActiveRecord) && ActiveRecord::VERSION::MAJOR == 3 base elsif @options[:shallow] resource_class From a8dfdb4d9511d5d23a459fd1fce17dc9cbda1975 Mon Sep 17 00:00:00 2001 From: Savater Sebastien Date: Thu, 12 Dec 2013 09:16:27 +0100 Subject: [PATCH 3/3] Update to pass specs --- lib/cancan/controller_resource.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cancan/controller_resource.rb b/lib/cancan/controller_resource.rb index 24bc76e4..5c771204 100644 --- a/lib/cancan/controller_resource.rb +++ b/lib/cancan/controller_resource.rb @@ -178,7 +178,7 @@ def resource_base if @options[:through] if parent_resource base = @options[:singleton] ? resource_class : parent_resource.send(@options[:through_association] || name.to_s.pluralize) - base = base.scoped if defined?(ActiveRecord) && ActiveRecord::VERSION::MAJOR == 3 + base = base.scoped if base.respond_to?(:scoped) && defined?(ActiveRecord) && ActiveRecord::VERSION::MAJOR == 3 base elsif @options[:shallow] resource_class