Sha256: c05dc85ae70193ae410ab2bc43877d81cfb795bbe882f260c2da92f7a4ee5ba2

Contents?: true

Size: 1.31 KB

Versions: 8

Compression:

Stored size: 1.31 KB

Contents

# Nested and Polymorphic Resource Helpers
#
module Resourcelogic
  module Singleton
    def self.included(klass)
      klass.class_eval do
        add_acts_as_resource_module(Methods)
      end
    end
    
    module Methods
      def object
        return @object if defined?(@object)
        
        if singleton?
          if !parent? && respond_to?("current_#{model_name}", true)
            @object = send("current_#{model_name}")
          elsif parent? && parent.send(model_name)
            @object = parent.send(model_name)
          else
            super
          end
        else
          super
        end
      end
      
      def build_object
        if singleton? && parent?
          scope.send("build_#{model_name}")
        else
          super
        end
      end
      
      def scope
        if singleton? && parent?
          parent
        else
          super
        end
      end
      
      # Route alises can only be used for singleton, like account => user. Otherwise the urligence wont work because there is no account model.
      def object_url_parts(action = nil, *alternate_object_or_params)
        singleton? ? ([action] + contexts_url_parts + [route_name]) : super
      end
      
      # Override me with true to make singleton
      def singleton?
        false
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
binarylogic-resourcelogic-0.12.3 lib/resourcelogic/singleton.rb
binarylogic-resourcelogic-0.12.4 lib/resourcelogic/singleton.rb
binarylogic-resourcelogic-0.12.5 lib/resourcelogic/singleton.rb
binarylogic-resourcelogic-0.12.6 lib/resourcelogic/singleton.rb
resourcelogic-0.12.6 lib/resourcelogic/singleton.rb
resourcelogic-0.12.5 lib/resourcelogic/singleton.rb
resourcelogic-0.12.3 lib/resourcelogic/singleton.rb
resourcelogic-0.12.4 lib/resourcelogic/singleton.rb