module Shibaraku::ActiveRecordExt::Core::ClassMethods
Public Instance Methods
in_time(user = nil, now = Time.current)
click to toggle source
# File lib/shibaraku/active_record_ext.rb, line 52 def in_time(user = nil, now = Time.current) if ancestors.include?(::ActiveRecord::Base) start_at = arel_table[shibaraku_start_at_column_name(user)] end_at = arel_table[shibaraku_end_at_column_name(user)] starting = where(start_at.eq(nil).or(start_at.lteq(now))) ending = where(end_at.eq(nil).or(end_at.gt(now))) starting.merge(ending) else start_at = shibaraku_start_at_column_name(user) end_at = shibaraku_end_at_column_name(user) all.select do |record| (record.send(start_at).nil? || record.send(start_at) <= now) && (record.send(end_at).nil? || now < record.send(end_at)) end end end
shibaraku_end_at_column_name(user)
click to toggle source
# File lib/shibaraku/active_record_ext.rb, line 40 def shibaraku_end_at_column_name(user) name = self.shibaraku_end_at_column name = test_column_name(name) if user && user.super_user? name end
shibaraku_start_at_column_name(user)
click to toggle source
# File lib/shibaraku/active_record_ext.rb, line 34 def shibaraku_start_at_column_name(user) name = self.shibaraku_start_at_column name = test_column_name(name) if user && user.super_user? name end
test_column_name(name)
click to toggle source
# File lib/shibaraku/active_record_ext.rb, line 46 def test_column_name(name) define_attribute_methods test_name = "test_#{name}" self.method_defined?(test_name) ? test_name : name end