如何修改使用Rails 3.2中编写的lambda到Rails 4.2之间创建的范围?

时间:2016-08-23 15:40:10

标签: ruby-on-rails

在将我的应用程序从Rails 3.2迁移到Rails 4.2时,我看到了很多变化,其中,范围语法是其中之一。 我修改了所有其他范围,但担心这个:

  scope :created_between, lambda { |start_at, end_at|
    { :conditions => {'users.created_at' => (start_at..end_at)} }
  }

以上范围为在特定日期之间创建的用户提供了相关的控制器方法代码:

def user_count
    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(:account).only_deleted.deleted_between(time_frame[:start], time_frame[:end]).count, User.includes(:account).with_deleted.created_between(time_frame[:start], time_frame[:end]).count]
    end
end

如何使用当前的Rails 4.2语法修改与控制器方法匹配的上述范围?

1 个答案:

答案 0 :(得分:0)

Rails 4.2使用较短的lambda样式作为范围,因此它将变为:

{{1}}