Ruby on rails 如何通过“定义”来定义搜索范围;“本周”;RubyonRails中的星期一到星期五是什么意思?

Ruby on rails 如何通过“定义”来定义搜索范围;“本周”;RubyonRails中的星期一到星期五是什么意思?,ruby-on-rails,date,Ruby On Rails,Date,这是先前问题的延伸。我意识到,我真正想要的是去一个URL/report/thisweek,它会做一个。在联系人电子邮件中查找(或命名范围)。发送日期发送日期的位置日期是在日期所属的一周的星期一到星期五之间。今天 换句话说,如果今天是周四,它将搜索本周周一到周四的所有电子邮件 不确定这是否可行或有意义,但我认为这是我最终要做的 谢谢 编辑:这是我尝试的,我在工作日得到一个未定义的局部变量错误 class ContactEmail < ActiveRecord::Base attr_acc

这是先前问题的延伸。我意识到,我真正想要的是去一个URL
/report/thisweek
,它会做一个
。在
联系人电子邮件中查找
(或命名范围)。发送日期
发送日期
的位置
日期
是在
日期所属的一周的星期一到星期五之间。今天

换句话说,如果今天是周四,它将搜索本周周一到周四的所有电子邮件

不确定这是否可行或有意义,但我认为这是我最终要做的

谢谢

编辑:这是我尝试的,我在工作日得到一个未定义的局部变量错误

class ContactEmail < ActiveRecord::Base
  attr_accessible :contact_id, :email_id, :status, :subject, :body, :date_created, :date_sent

  belongs_to :contact
  belongs_to :email
  belongs_to :user

  named_scope :this_week, :conditions => {:date_sent => work_days}

  protected
    # Returns a time range corresponding to work days of current or given time's week
    def work_days(t=Time.now)
      monday_0000 = t.at_beginning_of_week
      friday_2359 = 5.days.since(monday_0000)-1.second
      (monday_0000 .. friday_2359)
    end

end
class ContactEmail{:发送日期=>工作日}
受保护的
#返回与当前或给定时间周的工作日相对应的时间范围
def工作日(t=时间。现在)
星期一=本周开始时的t
星期五=5天。自(星期一)起-1.2秒
(星期一至星期五)
结束
结束

您可以按照以下思路做一些事情:

named_scope :this_week, :conditions => ['date_sent > ? and date_sent < ?', Time.now.at_beginning_of_week, Time.now]
named_scope:this_week,:conditions=>['date_sent>?和date_sent<?',Time.now.at_beging_week,Time.now]
基本上,通过使用
ActiveSupport::CoreExtensions::Time::Calculations
您将获得新的时间操纵方法。

YourModelYourModel < ActiveRecord::Base    
  named_scope :this_week, :conditions => {:date_sent => work_days}

(...)

  protected
    # Returns a time range corresponding to workdays of current or given time's week
    def work_days(t=Time.now)
      monday_0000 = t.at_beginning_of_week
      friday_2359 = 5.days.since(monday_0000)-1.second
      (monday_0000 .. friday_2359)
    end
end
命名范围:本周:条件=>{:发送日期=>工作日} (...) 受保护的 #返回与当前或给定时间周的工作日相对应的时间范围 def工作日(t=时间。现在) 星期一=本周开始时的t 星期五=5天。自(星期一)起-1.2秒 (星期一至星期五) 结束 结束

我希望这会对你有所帮助。

所以基本上我可以使用email=contact\u email。本周和电子邮件将是所有contact\u email(实际发送的电子邮件)的集合,日期在一周之内?要使用ActiveSupport扩展,我需要做些什么吗?您可能需要修改我编写的内容,并根据您的需要进行调整。。。而且,我还没有测试过它。。。因此可能存在语法错误:)这获取ContactEmail的集合,条件是date_sent字段介于当前日期和一周开始的日期之间(根据文档,这相当于星期一)。此外,请记住,命名范围适用于activerecord模型,因此您必须像“ContactEmail.this_week”一样使用它。您不需要做任何事情,Rails默认情况下需要ActiveSupport。我在周日做了此测试以澄清周末的要点:>>时间。现在=>太阳2010年5月9日12:43:58+0200>>工作日=>周一2010年5月03日00:00:00+0200..周五2010年5月07日23:59:59+0200是否:date\u sent=>work\u days基本上是指周一\u 000<:date\u sent<周五\u 2359?这是一个有趣的条件语法,我还没有看到,我肯定想看看…我在哪里可以读到更多?安吉拉:用你的浏览器搜索“范围”,第二个说:«可以在散列中使用一个范围来使用SQL运算符:Student.find(:all,:conditions=>{:grade=>9..12})»