Ruby on rails 如何根据Rails中的多个模型做出决策?
我有三个模型项目现场,项目经理和人力资源。每个模型都有状态布尔属性,我只想在所有状态==true时打印“批准”,但如果任何一个状态设置为false,我想打印“拒绝”。默认情况下,每个状态都有nil值Ruby on rails 如何根据Rails中的多个模型做出决策?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有三个模型项目现场,项目经理和人力资源。每个模型都有状态布尔属性,我只想在所有状态==true时打印“批准”,但如果任何一个状态设置为false,我想打印“拒绝”。默认情况下,每个状态都有nil值 <% if project_site.human_resources.empty? %> <td class="pending fi-eye"><%= " Pending" %></td>
<% if project_site.human_resources.empty? %>
<td class="pending fi-eye"><%= " Pending" %></td>
<% elsif %>
<% project_site.human_resources.each do |human_resource| %>
<% if human_resource.status == false %>
<td class="rejected fi-x"><%= ' Rejected' %></td>
<% elsif human_resource.status == true %>
<td class="approved fi-check"><%= " Approved" %></td>
<% end %>
<% end %>
<% elsif %>
<% project_site.project_directors.each do |project_director| %>
<% if project_director.status == false %>
<td class="rejected fi-x"><%= ' Rejected' %></td>
<% end %>
<% end %>
<% elsif %>
<% project_site.project_managers.each do |project_manager| %>
<% if project_manager.status == false %>
<td class="rejected fi-x"><%= ' Rejected' %></td>
<% end %>
<% end %>
<% end %>
尝试以下方法:
is_approved = project_site.human_resources.all?{|e| e.status } # or .all?(&:status) will check if status true for all records
你甚至可以简化
all_approved = (project_site.project_managers + project_site.human_resources + project_site.project_directors).all?(&:status)
它看起来并不完美,我建议将它移到模型中。看看如何编写一个新的应用程序。我们是否需要知道您的
td
标签和类似标签的类别?为什么您有4个不同的rubyonrails
标记?您真的应该将业务逻辑转移到模型中。视图应该只能够询问模型是否已批准。我可以在视图中执行此操作吗?如果不是,那么我如何通过在模型中加入逻辑来解决这个问题??