Exception: Filterameter::DeclarationErrors::CannotBeInlineScopeError

Inherits:
DeclarationError
  • Object
show all
Defined in:
lib/filterameter/declaration_errors/cannot_be_inline_scope_error.rb

Overview

Cannot Be Inline Scope Error

Error CannotBeInlineScopeError occurs when an inline scope has been used to define a filter that takes a parameter. This is not valid for use as a Filterameter filter because an inline scope always has an arity of -1 meaning the factory cannot tell if it has an argument or not. As such, all inline scopes are assumed to not have arguments and thus be conditional scopes.

The Rails guide provides guidance suggesting scopes that take arguments be written as class methods. This takes that guidance a step further and makes it a requirement for a scope that will be used as a filter.

Instance Method Summary collapse

Constructor Details

#initialize(model_name, scope_name) ⇒ CannotBeInlineScopeError

Returns a new instance of CannotBeInlineScopeError.



16
17
18
19
20
21
# File 'lib/filterameter/declaration_errors/cannot_be_inline_scope_error.rb', line 16

def initialize(model_name, scope_name)
  super(<<~ERROR.chomp)
    #{model_name} scope '#{scope_name}' needs to be written as a class method, not as an inline scope. This is a
      suggestion from the Rails guide but a requirement in order to use a scope that has an argument as a filter.
  ERROR
end