优化长关联链

Optimize long chain of associations

我有一个顾客去有经理的商店。 Customer和Manager都来自People模型,只是角色不同而已。

从客户那里获得经理的最佳方式是什么?

现在我有这个非常慢的解决方案:

shop_manager = customer.shop.people.select{|p| p.has_role?(:manager)}.first

person.rb:

belongs_to :shop

shop.rb:

has_many :people

使用 rolify gem.

分配角色

像这样?

shop_manager = customer.shop.people.with_role(:manger).first