Sha256: bbf5b216000bb3395c12326ff3550db2511316ea9dd192e2ea708ba678e6a42c
Contents?: true
Size: 866 Bytes
Versions: 3
Compression:
Stored size: 866 Bytes
Contents
require 'active_support/concern' module ActiveHouse module Scoping extend ActiveSupport::Concern included do class_attribute :_default_scope, instance_accessor: false class_attribute :_scopes, instance_accessor: false self._scopes = {} end class_methods do def default_scope(&block) self._default_scope = block end def scope(name, block) self._scopes = _scopes.merge(name.to_sym => block) end def respond_to_missing?(method_name, *_args) _scopes.key?(method_name.to_sym) end def method_missing(method_name, *args, &_block) method_name = method_name.to_sym if _scopes.key?(method_name) scope = _scopes.fetch(method_name) all.instance_exec(*args, &scope) else super end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
active_house-0.1.2 | lib/active_house/scoping.rb |
active_house-0.1.1 | lib/active_house/scoping.rb |
active_house-0.1.0 | lib/active_house/scoping.rb |