我正在开发一个帮助当地餐馆跟踪每天工作时间的应用程序。用户在每个班次结束时通过称为“结帐”的模型输入数据。他们选择与 a 关联的员工has_many :through => employment
,其中雇佣模型是一个连接表。当然,Checkout
这是一个令人困惑的术语,但这就是餐厅想要使用的 DSL。
您如何将每位员工在某一天的工作时间分组?当天,该员工的数据库中可能有 2 次结账——一次来自午餐,一次来自晚餐。
我想创建每个员工在给定日期工作的小时数列表,当他们从那天起的小时数可能存储在数据库中的单独结帐中。
Today's Date
Joe Employee
Hours worked: 12
Jill Employee
Hours worked: 4
etc.
当结账不是结账模型上的属性而是通过我的雇佣模型关联时,如何按员工对结账进行分组?本质上,我试图在我的报告助手中做这样的事情:
def checkouts_today
current_user.checkouts.where( :date => Date.today )
end
def employee_hours_today
checkouts_today.where( :employment => Employee.find_by(id: params[:id]) ).sum(:hours)
end
但我无法让它与 has_many :through 关联一起使用。我只能弄清楚如何计算那天的所有小时数,而不是每个员工的总小时数。
以下是相关文件:
- 模型/checkout.rb - https://gist.github.com/leemcalilly/a2a0578adaf8841d4d5e
- 模型/employee.rb - https://gist.github.com/leemcalilly/2df5e7fb7db0ac0f602c
模型/employment.rb - https://gist.github.com/leemcalilly/d3a028b6effe5f245b2a
helpers/reports_helper.rb - https://gist.github.com/leemcalilly/e2503188bb26df64ad20
查看/payroll_processing.html.erb - https://gist.github.com/leemcalilly/868b1272128e75dc60d0
db/schema.rb - https://gist.github.com/leemcalilly/f9ce764d16161b7b3017
更新: 我可以遍历每个员工并显示他们的结帐:
<% @employees.each do |employee| %>
<% if employee.checkouts.present? %>
<p><%= employee.full_name %></p>
<% employee.checkouts.each do |checkout| %>
<%= checkout.date %>
<%= checkout.shift %>
<%= checkout.hours %>
<% end %>
<% end %>
<% end %>
但是,我不知道如何汇总他们的时间并在一个块中显示和返回。它返回每个员工姓名下每天的每个结帐。这种逻辑似乎也不应该出现在视图中。