怎么干代码?

时间:2015-06-17 07:52:55

标签: ruby ruby-on-rails-4 views dry

我在应用程序中有很多通过关联。 我在InventoryController的INDEX操作中从employee表访问电子邮件,如下面的代码:

<% @inventories.each do |inventory| %>
    <% inventory.employee_inventories.each do |e| %>
            <%if e[:status]== 'ALLOTED'%>
                  <%= e.employee.email%>
             <% end %>
    <% end %>
<% end %>

请帮帮我如何查看此代码?提前致谢

2 个答案:

答案 0 :(得分:0)

@alloted_emails = @inventories.flat_map(&:employee_inventories).select do |i|
  i[:status] == 'ALLOTED'
end.map do |i|
  i.employee.email
end

除非你想按照@Pavan的建议创建一个范围,否则只需引入这个var并使用它。

答案 1 :(得分:0)

如果您在不同的视图中使用相同的代码,那么您可以创建一个帮助程序。

否则请记下此代码,如 -

getTestStackById

代码中的主要问题是n + 1查询问题。如果您正在使用预先加载,那么没有问题,否则在您的查询中使用包含关键字的急切加载。