Class: RubyUIAdmin::Scopes::BaseScope
- Inherits:
-
Object
- Object
- RubyUIAdmin::Scopes::BaseScope
- Defined in:
- lib/ruby_ui_admin/scopes/base_scope.rb
Overview
Base class for named index scopes. A scope narrows the index query
via a scope lambda and shows up as a tab above the table.
class Published < RubyUIAdmin::Scopes::BaseScope
self.name = "Published"
self.scope = -> { query.where(published: true) }
self.default = true
end
Instance Attribute Summary collapse
-
#params ⇒ Object
readonly
Returns the value of attribute params.
Class Method Summary collapse
- .default=(value) ⇒ Object
- .default? ⇒ Boolean
- .description ⇒ Object
- .description=(value) ⇒ Object
- .name ⇒ Object
-
.name=(value) ⇒ Object
Class-level
self.name =with fallback to the real class name. - .scope ⇒ Object
- .scope=(value) ⇒ Object
-
.scope_key ⇒ Object
URL key, e.g.
- .visible=(value) ⇒ Object
- .visible_setting ⇒ Object
Instance Method Summary collapse
-
#apply(query) ⇒ Object
Applies the scope to the query.
- #default? ⇒ Boolean
- #description ⇒ Object
-
#initialize(params: {}, default_override: nil) ⇒ BaseScope
constructor
default_override(set viascope Klass, default: trueon the resource) wins over the scope class's ownself.default. - #key ⇒ Object
- #name ⇒ Object
- #visible?(user: nil) ⇒ Boolean
Constructor Details
#initialize(params: {}, default_override: nil) ⇒ BaseScope
default_override (set via scope Klass, default: true on the resource) wins over
the scope class's own self.default.
66 67 68 69 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 66 def initialize(params: {}, default_override: nil) @params = params || {} @default_override = default_override end |
Instance Attribute Details
#params ⇒ Object (readonly)
Returns the value of attribute params.
62 63 64 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 62 def params @params end |
Class Method Details
.default=(value) ⇒ Object
40 41 42 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 40 def default=(value) @default = value end |
.default? ⇒ Boolean
44 45 46 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 44 def default? !!(@default if defined?(@default)) end |
.description ⇒ Object
36 37 38 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 36 def description @description if defined?(@description) end |
.description=(value) ⇒ Object
32 33 34 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 32 def description=(value) @description = value end |
.name ⇒ Object
20 21 22 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 20 def name @display_name || super end |
.name=(value) ⇒ Object
Class-level self.name = with fallback to the real class name.
16 17 18 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 16 def name=(value) @display_name = value end |
.scope ⇒ Object
28 29 30 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 28 def scope @scope if defined?(@scope) end |
.scope=(value) ⇒ Object
24 25 26 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 24 def scope=(value) @scope = value end |
.scope_key ⇒ Object
URL key, e.g. RubyUIAdmin::Scopes::PublishedPosts -> "published_posts".
57 58 59 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 57 def scope_key to_s.sub(/^RubyUIAdmin::Scopes::/, "").gsub("::", "_").underscore end |
.visible=(value) ⇒ Object
48 49 50 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 48 def visible=(value) @visible = value end |
.visible_setting ⇒ Object
52 53 54 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 52 def visible_setting defined?(@visible) ? @visible : true end |
Instance Method Details
#apply(query) ⇒ Object
Applies the scope to the query. A Symbol calls the model's named scope/class method;
a lambda is run with query and params available.
91 92 93 94 95 96 97 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 91 def apply(query) scope = self.class.scope return query if scope.nil? return query.public_send(scope) if scope.is_a?(Symbol) ExecutionContext.new(target: scope, query: query, params: params).handle end |
#default? ⇒ Boolean
83 84 85 86 87 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 83 def default? return !!@default_override unless @default_override.nil? self.class.default? end |
#description ⇒ Object
79 80 81 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 79 def description self.class.description end |
#key ⇒ Object
75 76 77 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 75 def key self.class.scope_key end |
#name ⇒ Object
71 72 73 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 71 def name self.class.name end |
#visible?(user: nil) ⇒ Boolean
99 100 101 102 103 104 |
# File 'lib/ruby_ui_admin/scopes/base_scope.rb', line 99 def visible?(user: nil) setting = self.class.visible_setting return setting unless setting.respond_to?(:call) ExecutionContext.new(target: setting, user: user, params: params).handle end |