Sha256: 372830f63bb81ccc3f827876544d8aa493ecdc98b861ed88b9f27ad9766eb7c7
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
module ByStar module Base include ByStar::Between include ByStar::Directional def by_star_field(*args) options = args.extract_options! @by_star_start_field ||= args[0] @by_star_end_field ||= args[1] @by_star_offset ||= options[:offset] @by_star_scope ||= options[:scope] end def by_star_offset(options = {}) (options[:offset] || @by_star_offset || 0).seconds end def by_star_start_field(options={}) field = options[:field] || options[:start_field] || @by_star_start_field || by_star_default_field field.to_s end def by_star_end_field(options={}) field = options[:field] || options[:end_field] || @by_star_end_field || by_star_start_field field.to_s end def by_star_scope(options={}) scope = options[:scope] || @by_star_scope || self if scope.is_a?(Proc) if scope.arity == 0 return instance_exec(&scope) elsif options[:scope_args] return instance_exec(*Array(options[:scope_args]), &scope) else raise 'ByStar :scope Proc requires :scope_args to be specified.' end else return scope end end protected # Wrapper function which extracts time and options for each by_star query. # Note the following syntax examples are valid: # # Post.by_month # defaults to current time # Post.by_month(2, year: 2004) # February, 2004 # Post.by_month(Time.now) # Post.by_month(Time.now, field: "published_at") # Post.by_month(field: "published_at") # def with_by_star_options(*args, &block) options = args.extract_options!.symbolize_keys! time = args.first || Time.zone.now block.call(time, options) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
by_star-3.0.0 | lib/by_star/base.rb |