查找过去

时间:2017-08-16 04:41:16

标签: ruby-on-rails activerecord

我正在尝试创建一个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,但仍然是过去。

2 个答案:

答案 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,那是什么。但为了获得过去的最新记录,它应该足够了