26 lines
483 B
Ruby
26 lines
483 B
Ruby
|
module ActiveRecord
|
||
|
class DynamicScopeMatch
|
||
|
def self.match(method)
|
||
|
ds_match = self.new(method)
|
||
|
ds_match.scope ? ds_match : nil
|
||
|
end
|
||
|
|
||
|
def initialize(method)
|
||
|
@scope = true
|
||
|
case method.to_s
|
||
|
when /^scoped_by_([_a-zA-Z]\w*)$/
|
||
|
names = $1
|
||
|
else
|
||
|
@scope = nil
|
||
|
end
|
||
|
@attribute_names = names && names.split('_and_')
|
||
|
end
|
||
|
|
||
|
attr_reader :scope, :attribute_names
|
||
|
|
||
|
def scope?
|
||
|
!@scope.nil?
|
||
|
end
|
||
|
end
|
||
|
end
|