From c9e0f4e3efd020a2d4ac656ff54b04550ba81e17 Mon Sep 17 00:00:00 2001
From: Ryan Bates <ryan@railscasts.com>
Date: Fri, 6 Aug 2010 13:06:18 -0700
Subject: [PATCH] renaming :singular resource option to :singleton

---
 CHANGELOG.rdoc                          |  2 +-
 lib/cancan/controller_additions.rb      |  4 ++--
 lib/cancan/controller_resource.rb       | 10 +++++-----
 spec/cancan/controller_resource_spec.rb |  8 ++++----
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/CHANGELOG.rdoc b/CHANGELOG.rdoc
index a3260a7..ed13169 100644
--- a/CHANGELOG.rdoc
+++ b/CHANGELOG.rdoc
@@ -1,6 +1,6 @@
 * Adding :find_by option to load_resource - see issue #19
 
-* Adding :singular option to load_resource - see issue #93
+* Adding :singleton option to load_resource - see issue #93
 
 * Supporting multiple resources in :through option for polymorphic
 associations - see issue #73
diff --git a/lib/cancan/controller_additions.rb b/lib/cancan/controller_additions.rb
index 3ce9d44..79a5e6e 100644
--- a/lib/cancan/controller_additions.rb
+++ b/lib/cancan/controller_additions.rb
@@ -67,8 +67,8 @@ module CanCan
       # [:+through+]
       #   Load this resource through another one. This should match the name of the parent instance variable.
       #
-      # [:+singular+]
-      #   Pass +true+ if this is a singular resource through a +has_one+ association.
+      # [:+singleton+]
+      #   Pass +true+ if this is a singleton resource through a +has_one+ association.
       #
       # [:+parent+]
       #   True or false depending on if the resource is considered a parent resource. This defaults to +true+ if a resource
diff --git a/lib/cancan/controller_resource.rb b/lib/cancan/controller_resource.rb
index 3d4dcc6..587e9c6 100644
--- a/lib/cancan/controller_resource.rb
+++ b/lib/cancan/controller_resource.rb
@@ -42,18 +42,18 @@ module CanCan
     def load_resource_instance
       if !parent? && new_actions.include?(@params[:action].to_sym)
         build_resource
-      elsif id_param || @options[:singular]
+      elsif id_param || @options[:singleton]
         find_resource
       end
     end
 
     def build_resource
-      method_name = @options[:singular] ? "build_#{name}" : "new"
+      method_name = @options[:singleton] ? "build_#{name}" : "new"
       resource_base.send(*[method_name, @params[name]].compact)
     end
 
     def find_resource
-      if @options[:singular]
+      if @options[:singleton]
         resource_base.send(name)
       else
         @options[:find_by] ? resource_base.send("find_by_#{@options[:find_by]}!", id_param) : resource_base.find(id_param)
@@ -90,10 +90,10 @@ module CanCan
 
     # The object that methods (such as "find", "new" or "build") are called on.
     # If the :through option is passed it will go through an association on that instance.
-    # If the :singular option is passed it won't use the association because it needs to be handled later.
+    # If the :singleton option is passed it won't use the association because it needs to be handled later.
     def resource_base
       if through_resource
-        @options[:singular] ? through_resource : through_resource.send(name.to_s.pluralize)
+        @options[:singleton] ? through_resource : through_resource.send(name.to_s.pluralize)
       else
         resource_class
       end
diff --git a/spec/cancan/controller_resource_spec.rb b/spec/cancan/controller_resource_spec.rb
index 70b8279..8b8e693 100644
--- a/spec/cancan/controller_resource_spec.rb
+++ b/spec/cancan/controller_resource_spec.rb
@@ -166,22 +166,22 @@ describe CanCan::ControllerResource do
     @controller.instance_variable_get(:@ability).should == :some_ability
   end
 
-  it "should find record through has_one association with :singular option" do
+  it "should find record through has_one association with :singleton option" do
     @params.merge!(:action => "show")
     person = Object.new
     @controller.instance_variable_set(:@person, person)
     stub(person).ability { :some_ability }
-    resource = CanCan::ControllerResource.new(@controller, :through => :person, :singular => true)
+    resource = CanCan::ControllerResource.new(@controller, :through => :person, :singleton => true)
     resource.load_resource
     @controller.instance_variable_get(:@ability).should == :some_ability
   end
 
-  it "should build record through has_one association with :singular option" do
+  it "should build record through has_one association with :singleton option" do
     @params.merge!(:action => "create", :ability => :ability_attributes)
     person = Object.new
     @controller.instance_variable_set(:@person, person)
     stub(person).build_ability(:ability_attributes) { :new_ability }
-    resource = CanCan::ControllerResource.new(@controller, :through => :person, :singular => true)
+    resource = CanCan::ControllerResource.new(@controller, :through => :person, :singleton => true)
     resource.load_resource
     @controller.instance_variable_get(:@ability).should == :new_ability
   end