0
오늘, 어제, 이번 주, 이번 달 등의 사용자 생성/삭제 횟수를 보여주는 대시 보드가 있습니다. 이 경우 컨트롤러에서이 개수와 모델의 범위를 얻기위한 조건을 작성했습니다. 위의 시나리오는 Rails 3.2에서 제대로 작동하지만 Rails 4.2에서는 작동하지 않습니다. 이 내 코드입니다 :Rails 4.2에서 사용자 수를 표시하는 시간 프레임이 작동하지 않습니다.
컨트롤러 :
protected
def get_user_counts(conditions = {})
includes = []
if conditions.empty?
# nothing
elsif conditions.keys.first.include?("accounts.")
includes = [:account]
end
result = []
[
{:label => 'today', :start => Time.zone.now.beginning_of_day, :end => Time.zone.now.end_of_day},
{:label => 'yesterday', :start => 1.days.ago.beginning_of_day, :end => 1.days.ago.end_of_day},
{:label => 'this week', :start => Time.zone.now.beginning_of_week, :end => Time.zone.now.end_of_week},
{:label => 'last week', :start => 7.days.ago(Time.zone.now.beginning_of_week), :end => 7.days.ago(Time.zone.now.end_of_week)},
{:label => 'this month', :start => Time.zone.now.beginning_of_month, :end => Time.zone.now.end_of_month},
{:label => 'last month', :start => Time.zone.now.prev_month.beginning_of_month, :end => Time.zone.now.prev_month.end_of_month},
].each do |time_frame|
result << [time_frame[:label], User.includes(includes).where(conditions).only_deleted.deleted_between(time_frame[:start], time_frame[:end]).count, User.includes(includes).where(conditions).with_deleted.created_between(time_frame[:start], time_frame[:end]).count]
end
return result
end
모델 :
scope :created_between, lambda { |start_at, end_at|
{ :conditions => {'users.created_at' => (start_at..end_at)} }
}
scope :deleted_between, lambda { |start_at, end_at|
# Don't forget to use 'count_only_deleted' or 'find_only_deleted' in combination
# with this, or you'll always return zero users. :with_deleted and :only_deleted
# keys do not work in named_scope.
{ :conditions => {'users.deleted_at' => (start_at..end_at)} }
}
특히 모델의 범위에, 내 코드에 어떤 잘못이 아니면 수정이 필요하십니까? 도와주세요.