Rails - 复杂的查询

时间:2012-11-11 02:22:03

标签: ruby-on-rails date

我是rails的新手,我很难用rails的方法编写查询。

我想要做的是拥有一个有很多膳食的食堂模型,但是我想只展示当天送达的食物。

所以我创建了一个食堂模型,它有很多餐。 然后我创建了Served_date模型,即属于餐和膳食has_many Served_dates,因此我们可以在用餐时指定多个日期。

我将如何进行此类查询?

// P.S。:Served_date.where(served_at: Date.today)返回今天正在服务的Served_dates

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,按惯例不应强调模型名称,因此您应该使用ServedDate而不是Served_date。

此查询应该为您提供所需内容:

Meal.joins(:served_dates).where(served_dates: {served_at: Date.today})

更好的是,您可以对其进行参数化并将其转换为更便携的范围:

class Meal < ActiveRecord::Base
  scope :served_on, lambda{|date| joins(:served_dates).where(served_dates: {served_at: date}) }
end

然后致电:

Meal.served_on(Date.today)