0

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

我想要完成的是有一个有很多餐点的 Canteen 模型,但是我只想显示当天供应的餐点。

所以我创建了一个 Canteen 模型,即 has_many Meals。然后我创建了 Served_date 模型,该模型分为 belongs_to 餐和 Meal has_many Served_dates,这样我们就可以在提供餐点时指定多个日期。

我将如何进行这样的查询?

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

谢谢 !

4

1 回答 1

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)
于 2012-11-11T02:30:42.090 回答