Sha256: 3737b499dfe905b8ca0dfb38d8a034597e64806fdbce3169d3b7aa9d149f537e

Contents?: true

Size: 1.87 KB

Versions: 16

Compression:

Stored size: 1.87 KB

Contents

module ActiveAdmin
  class Scope

    attr_reader :scope_method, :id, :scope_block, :display_if_block, :show_count, :default_block

    # Create a Scope
    #
    # Examples:
    #
    #   Scope.new(:published)
    #   # => Scope with name 'Published' and scope method :published
    #
    #   Scope.new('Published', :public)
    #   # => Scope with name 'Published' and scope method :public
    #
    #   Scope.new 'Published', :public, if: proc { current_admin_user.can? :manage, resource_class } do |articles|
    #     articles.where published: true
    #   end
    #   # => Scope with name 'Published' and scope method :public, optionally displaying the scope per the :if block
    #
    #   Scope.new('Published') { |articles| articles.where(published: true) }
    #   # => Scope with name 'Published' using a block to scope
    #
    #   Scope.new ->{Date.today.strftime '%A'}, :published_today
    #   # => Scope with dynamic title using the :published_today scope method
    #
    def initialize(name, method = nil, options = {}, &block)
      @name, @scope_method = name, method.try(:to_sym)

      if name.is_a? Proc
        raise "A string/symbol is required as the second argument if your label is a proc." unless method
        @id = method.to_s.parameterize("_")
      else
        @scope_method ||= name.to_sym
        @id = name.to_s.parameterize("_")
      end

      @scope_method               = nil        if @scope_method == :all
      @scope_method, @scope_block = nil, block if block_given?

      @show_count       = options.fetch(:show_count, true)
      @display_if_block = options[:if]      || proc{ true }
      @default_block    = options[:default] || proc{ false }

    end

    def name
      case @name
        when Proc   then @name.call.to_s
        when String then @name
        when Symbol then @name.to_s.titleize
        else             @name.to_s
      end
    end

  end
end

Version data entries

16 entries across 16 versions & 3 rubygems

Version Path
activeadmin_addons-1.1.2 vendor/bundle/ruby/2.3.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/scope.rb
activeadmin_addons-1.1.1 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/scope.rb
activeadmin_addons-1.1.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/scope.rb
activeadmin_addons-1.0.1 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/scope.rb
activeadmin_addons-1.0.0 vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-a5a53c3f2b8f/lib/active_admin/scope.rb
yousty-activeadmin-1.0.13.pre lib/active_admin/scope.rb
yousty-activeadmin-1.0.12.pre lib/active_admin/scope.rb
yousty-activeadmin-1.0.11.pre lib/active_admin/scope.rb
yousty-activeadmin-1.0.10.pre lib/active_admin/scope.rb
yousty-activeadmin-1.0.9.pre lib/active_admin/scope.rb
yousty-activeadmin-1.0.8.pre lib/active_admin/scope.rb
activeadmin-1.0.0.pre2 lib/active_admin/scope.rb
activeadmin-1.0.0.pre1 lib/active_admin/scope.rb
yousty-activeadmin-1.0.7.pre lib/active_admin/scope.rb
yousty-activeadmin-1.0.6.pre lib/active_admin/scope.rb
yousty-activeadmin-1.0.5.pre lib/active_admin/scope.rb