我在应用程序中有很多通过关联。 我在InventoryController的INDEX操作中从employee表访问电子邮件,如下面的代码:
<% @inventories.each do |inventory| %>
<% inventory.employee_inventories.each do |e| %>
<%if e[:status]== 'ALLOTED'%>
<%= e.employee.email%>
<% end %>
<% end %>
<% end %>
请帮帮我如何查看此代码?提前致谢
答案 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查询问题。如果您正在使用预先加载,那么没有问题,否则在您的查询中使用包含关键字的急切加载。