Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何根据Rails中的多个模型做出决策?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何根据Rails中的多个模型做出决策?

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>

我有三个模型项目现场,项目经理和人力资源。每个模型都有状态布尔属性,我只想在所有状态==true时打印“批准”,但如果任何一个状态设置为false,我想打印“拒绝”。默认情况下,每个状态都有nil值

        <% 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
标记?您真的应该将业务逻辑转移到模型中。视图应该只能够询问模型是否已批准。我可以在视图中执行此操作吗?如果不是,那么我如何通过在模型中加入逻辑来解决这个问题??