Rails でテーブルのロジックをセットアップしようとしています。基本的にはタイムシート アプリケーションであり、私がやりたいことは、目標を達成した場合に緑色で表示されるように設定することです。あなたがほとんどそこにいる場合は黄色。近くにいない場合は赤になります。以下のコードは機能します。しかし、私のログを見ると、ひどく非効率的です。どうすればこれをよりうまく書くことができますか?
これがビューです。users/hours.html.erb
<div class="page-header"><h1>Weekly Timesheets</h1></div>
<table class="nicetable table-condensed">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Total Hours</th>
<th>Role</th>
<th>Change Role</th>
<th>Timesheet</th>
</tr>
</thead>
<tbody>
<% @users.each do |user| %>
<tr class="<%= 'success' if user.has_role? :staff and user.add_hours >= 10 %><%= 'warning' if user.has_role? :staff and user.add_hours < 10 and user.add_hours > 6 %><%= 'error' if user.has_role? :staff and user.add_hours >= 0 and user.add_hours <= 6 %><%= 'success' if user.has_role? :new_staff and user.add_hours >= 15 %><%= 'warning' if user.has_role? :new_staff and user.add_hours < 15 and user.add_hours >= 12 %><%= 'error' if user.has_role? :new_staff and user.add_hours < 12 and user.add_hours >= 0 %>">
<td><%= user.name%></td>
<td><%= user.email %></td>
<td><%= user.add_hours %></td>
<td><%= user.roles.first.name.titleize unless user.roles.first.nil? %></td>
<td>
<a data-toggle="modal" href="#role-options-<%= user.id %>" class="btn btn-mini" type="button">Change role</a>
<%= render user %>
</td>
<td><%= link_to 'Timesheet', user_timesheets_path(user, @timesheets), class: "btn btn-mini" %>
</tr>
そして、これが私のユーザーモデルです。
def add_hours
self.timesheets.where('day BETWEEN ? AND ?', Date.today.beginning_of_week, Date.today.end_of_week).order('created_at DESC').sum{|p| p.teacher + p.conversation + p.study}
end