Gia*_*rzo 12 activerecord ruby-on-rails date
我怎么能在rails active record中做到这一点?
找到所有匹配的模型(created_at +本月之间的100天)
编辑:好的,对不起,这不是我在Rails 3.0中的活动记录中尝试做的事情:
select
distinct p.ID
from
patients p
inner join vaccines_patients vp on p.ID = vp.patient_id
inner join vaccines v on v.ID = vp.VACCINE_ID
where
month(vp.appliedAt + INTERVAL v.duration DAY) = month(now())
Run Code Online (Sandbox Code Playgroud)
我想得到一个类似的查询,但使用活动记录中的位置.
Cri*_*jon 50
在Rails 3中,您可以使用:
YourModel.where(:created_at => start_date..end_date)
Run Code Online (Sandbox Code Playgroud)
其中start_date
和end_date
是Date类.
Mat*_*ito 10
ActiveRecord
可以使用BETWEEN
何时接受a 来构建查询Range
.这听起来可能更像你正在寻找的东西.
YourModel.where(created_at: 100.days.ago..100.days.from_now)
这样做总比>=
<=
在查询中使用要简单一些
你没有指定Rails 2或3,我不完全确定你实际想要的范围,但这应该让你开始.请添加一些示例日期,并说明它们是否应该属于您的范围.
在Rails 2中,您可以在模型中使用named_scope.
# This range represents "created_at" values that are within 100 days on either side of today.
# Please clarify what "created_at + 100 days between this month" means if you need help
# refining this.
#
named_scope :within_range, lambda {{ :conditions => ["created_at <= ? AND created_at >= ?", Date.today + 100, Date.today - 100] }}
Run Code Online (Sandbox Code Playgroud)
在Rails 3中,您将使用scope
新的Arel范围方法:
scope :within_range, lambda { where("created_at <= ? AND created_at >= ?", Date.today + 100, Date.today - 100) }
Run Code Online (Sandbox Code Playgroud)