orbit-basic/app/models/mongoid/base_model.rb

47 lines
1.2 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# coding: utf-8
# 基本 Model加入一些通用功能
module Mongoid
module BaseModel
extend ActiveSupport::Concern
included do
scope :recent, desc(:_id)
scope :exclude_ids, Proc.new { |ids| where(:_id.nin => ids.map(&:to_i)) }
scope :by_week, where(:created_at.gte => 7.days.ago.utc)
end
module ClassMethods
# like ActiveRecord find_by_id
def find_by_id(id)
if id.is_a?(Integer) or id.is_a?(String)
where(:_id => id.to_i).first
else
nil
end
end
def find_in_batches(opts = {})
batch_size = opts[:batch_size] || 1000
start = opts.delete(:start).to_i || 0
objects = self.limit(batch_size).skip(start)
t = Time.new
while objects.any?
yield objects
start += batch_size
# Rails.logger.debug("processed #{start} records in #{Time.new - t} seconds") if Rails.logger.debug?
break if objects.size < batch_size
objects = self.limit(batch_size).skip(start)
end
end
def delay
Sidekiq::Extensions::Proxy.new(DelayedDocument, self)
end
end
def delay
Sidekiq::Extensions::Proxy.new(DelayedDocument, self)
end
end
end