Sha256: bc130849b18ee9dc1e26a8736c528888c64c249deb7a1c12f5811ea7867e01e0
Contents?: true
Size: 1.97 KB
Versions: 1
Compression:
Stored size: 1.97 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 does not accept arguments' 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 ||= Time.zone.local(options[:year]) if options[:year] time ||= Time.zone.now block.call(time, options) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
by_star-2.2.1 | lib/by_star/base.rb |