class ActiveAdmin::Scope

Attributes

default_block[R]
display_if_block[R]
group[R]
id[R]
scope_block[R]
scope_method[R]
show_count[R]

Public Class Methods

new(name, method = nil, options = {}, &block) click to toggle source

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

Scope.new :published, nil, group: :status
# => Scope with the group :status
# File lib/active_admin/scope.rb, line 30
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(separator: "_")
  else
    @scope_method ||= name.to_sym
    @id = name.to_s.parameterize(separator: "_")
  end

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

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

Public Instance Methods

name() click to toggle source
# File lib/active_admin/scope.rb, line 51
def name
  case @name
  when String then @name
  when Symbol then @localizer ? @localizer.t(@name, scope: 'scopes') : @name.to_s.titleize
  else @name
  end
end