我在参数中收到日期并搜索数据库以查看日期是否在开始日期和结束日期之间。我的代码如下。
date = params[:date]
record = Campaign.where(['start_date < ? AND end_date > ?', date, date])
这只返回每个记录名称。但是当我尝试访问完整记录时,就像它的id一样,rails会抛出一个错误。
我不明白我做错了什么。
答案 0 :(得分:18)
试试这是用于检查两个日期之间的日期的rails格式。
start_date = params[:start_date].to_date.beginning_of_day
end_date = params[:end_date].to_date.end_of_day
records = Campaign.where(:created_at => start_date..end_date)
它将返回在给定日期范围内创建的一系列广告系列。
希望它会有所帮助。
答案 1 :(得分:7)
您的查询应如下所示(请注意您的查询中不包含方括号。
date = params[:date]
record = Campaign.where('start_date < ? AND end_date > ?', date, date)
这将返回一系列广告系列,其日期介于其start_date和end_date之间。因此,您不能只说record.id
因为记录实际上是一个Campaign对象数组。
相反,尝试循环结果以访问广告系列数组中的各个元素。
record.each do |record_object|
# perform some action on each record_object here
end
答案 2 :(得分:5)
Campaign.where(
"created_at >= :start_date AND created_at <= :end_date",
{ start_date: params[:start_date],
end_date: params[:end_date]}
)
希望它会有所帮助。