我有一个询问,我想知道你是否可以帮助我。 在我的申请中,我有桌子的员工,日历和轮班。以下是关系:
class Employee < ApplicationRecord
has_many :calendars
has_many :shifts, :through => :calendars
class Shift < ApplicationRecord
has_many :calendars
has_many :employees, :through => :calendars
class Calendar < ApplicationRecord
belongs_to :employee
belongs_to :shift
因此,我需要制作一个表格,其中显示以下结果:
Name | Calendars.date | Calendars.date | …
Employee.name | Shift.cod | Shift.cod | …
Employee.name | Shift.cod | Shift.cod | …
…
为此,我构建了查询:
-@employees = Employee.joins(:calendars, :shifts).where("EXTRACT(MONTH FROM calendars.date) = ?", 12).uniq
结果得到了所有必要的数据,但是我需要显示一个月的数据,但是我没有把它放在where中的参数中。
如何构建查询以按月过滤?
答案 0 :(得分:0)
也许你可以尝试Employee.includes(:calendars, :shifts).where('calandar.month= ?', '<whatever month here>').references(:calendars)
我不确定语法是否正确,但基本上你使用1st_obj.includes(obj).where(case).references(obj)
来处理属于另一个对象的对象
这里是docs for active_records .includes
方法