如何按 rails 中的日期范围查找出勤率?
how to find attendance by date range in rails?
manpower
与 attendance
有 one_to_many 关联
invoice
table 具有属性 from_date
、to_date
attendance_table
具有属性 status
、manpower_id
和 attendance_date。
我能够在发票#index 上提供所有人力。
但我不知道如何计算每个人力的出勤率并将它们显示在列中,同时不考虑发票 table 的持续时间。
出席 table 1 人出席。并且 0 不存在。
<table>
<thead>
<tr>
<th>Name</th>
<th>total present</th>
<th>Total Abesent</th>
</tr>
</thead>
<tbody>
<% @manpowers.each do |manpower| %>
<tr>
<td><%= manpower.name %></td>
<td><%= "" %></td>
<td><%= "" %></td>
</tr>
<% end %>
</tbody>
</table>
目前 - manpower.attendance.where(attendance_date: from_date..to_date, status: 1).count
缺席 - manpower.attendance.where(attendance_date: from_date..to_date, status: 0).count
您可以在考勤模型中创建范围并在视图中使用它们。
class Attendance < ActiveRecord::Base
scope :absent, where(status: 0)
scope :present, where(status: 1)
scope :date_between, -> (from_date, to_date) { where(attendance_date: from_date..to_date) }
end
并像
一样使用它
目前 - manpower.attendance.date_between(from_date, to_date).present.count
缺席 - manpower.attendance.date_between(from_date, to_date).absent.count
<table>
<thead>
<tr>
<th>Name</th>
<th>Total Present</th>
<th>Total Absent</th>
</tr>
</thead>
<tbody>
<% @manpowers.each do |manpower| %>
<tr>
<td><%= manpower.name %></td>
<td><%= manpower.attendance.date_between(from_date, to_date).present.count %></td>
<td><%= manpower.attendance.date_between(from_date, to_date).absent.count %></td>
</tr>
<% end %>
</tbody>
</table>
manpower
与 attendance
invoice
table 具有属性 from_date
、to_date
attendance_table
具有属性 status
、manpower_id
和 attendance_date。
我能够在发票#index 上提供所有人力。
但我不知道如何计算每个人力的出勤率并将它们显示在列中,同时不考虑发票 table 的持续时间。
出席 table 1 人出席。并且 0 不存在。
<table>
<thead>
<tr>
<th>Name</th>
<th>total present</th>
<th>Total Abesent</th>
</tr>
</thead>
<tbody>
<% @manpowers.each do |manpower| %>
<tr>
<td><%= manpower.name %></td>
<td><%= "" %></td>
<td><%= "" %></td>
</tr>
<% end %>
</tbody>
</table>
目前 - manpower.attendance.where(attendance_date: from_date..to_date, status: 1).count
缺席 - manpower.attendance.where(attendance_date: from_date..to_date, status: 0).count
您可以在考勤模型中创建范围并在视图中使用它们。
class Attendance < ActiveRecord::Base
scope :absent, where(status: 0)
scope :present, where(status: 1)
scope :date_between, -> (from_date, to_date) { where(attendance_date: from_date..to_date) }
end
并像
一样使用它目前 - manpower.attendance.date_between(from_date, to_date).present.count
缺席 - manpower.attendance.date_between(from_date, to_date).absent.count
<table>
<thead>
<tr>
<th>Name</th>
<th>Total Present</th>
<th>Total Absent</th>
</tr>
</thead>
<tbody>
<% @manpowers.each do |manpower| %>
<tr>
<td><%= manpower.name %></td>
<td><%= manpower.attendance.date_between(from_date, to_date).present.count %></td>
<td><%= manpower.attendance.date_between(from_date, to_date).absent.count %></td>
</tr>
<% end %>
</tbody>
</table>