我正在尝试创建一个Rails控制器查询,该查询在未来的列中找到最近日期的记录(这就是为什么我不能做一个简单的order
语句) 。我找到this post,但那里的答案(MyModel.where("created_at < ?", 2.days.ago)
)会引发一些错误。
我有这个工作正常,但是如果有一个星期从未来开始它选择那个,而不是过去最近的那个:
@most_recent = Plan.order("week_starting").last
有关如何在Rails中正确执行此操作的任何想法?
这是我的整个plans#index
方法:
def index
@plans = Plan.where(user_id: current_user.id)
@plan = Plan.new
@recent = Plan.order("week_starting").last <<<THIS LINE
@recipes = Recipe.where(user_id: current_user.id)
@monday = Recipe.where(id: @recent.monday)[0]
@tuesday = Recipe.where(id: @recent.tuesday)[0]
@wednesday = Recipe.where(id: @recent.wednesday)[0]
@thursday = Recipe.where(id: @recent.thursday)[0]
@friday = Recipe.where(id: @recent.friday)[0]
@saturday = Recipe.where(id: @recent.saturday)[0]
@sunday = Recipe.where(id: @recent.sunday)[0]
end
基本上,我需要当前用户的plan
,其week_starting
值最接近Date.today
,但仍然是过去。
答案 0 :(得分:0)
检查
Plan.where("created_at > ?", Time.now.beginning_of_week).order("week_starting").last
答案 1 :(得分:0)
这适合你吗?
MyModel.where("created_at < ? ", Time.now).order('created_at DESC').first
不确定为什么你有week_starting
,那是什么。但为了获得过去的最新记录,它应该足够了