【问题标题】:Optimize long chain of associations优化关联长链
【发布时间】:2016-09-01 12:34:29
【问题描述】:

我有一个客户去有经理的商店。 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 分配角色。

【问题讨论】:

  • 向我们展示personshop 的关联,以及您如何存储roles
  • 请查看更新后的问题

标签: ruby-on-rails ruby associations


【解决方案1】:

像这样?

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

【讨论】:

  • 好的,谢谢。还有其他可能让它运行得更快吗?
  • 我不确定with_role 方法在后台是如何工作的,但这包含在文档中,我想它应该是有效的?在你的rails控制台做customer.shop.people.with_role(:manger).to_sql,把结果贴在这里,我看看sql端
猜你喜欢
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多