module Dsl::Scopes
Public Class Methods
new(params, resource = nil, options = {})
click to toggle source
Calls superclass method
# File lib/dsl/scopes.rb, line 23 def self.new(params, resource = nil, options = {}) if options[:scope].present? class_to_call = "::#{name}Scope#{options[:scope].capitalize}".constantize rescue raise(ActiveFormObjects::DslError, "[#{name}] No scope named #{options[:scope]} found") return class_to_call.new(params, resource) end super(params, resource) end
scope(*params, &block)
click to toggle source
# File lib/dsl/scopes.rb, line 14 def self.scope(*params, &block) raise(ActiveFormObjects::DslError, "[#{name}] scope must be a bloc") if block.nil? || !block.respond_to?(:call) params.each do |param| block_content = Ruby2Ruby.new.process(RubyParser.new.process(block.source).to_a.last) eval("class ::#{name}Scope#{param.capitalize} < #{name} ; #{block_content}; end") end end