ActiveRecord以最高效的方式检查是否关联对象

时间:2014-01-24 21:11:36

标签: ruby-on-rails activerecord

我有模特的场地和场地管理员。我需要显示所有场地,但是他们是否有场地经理。

我可以在场地模型上设置类似“计数器缓存”的东西,但是布尔值,所以我不必查询相关的venue_managers。我想知道是否有人知道一种更简单的方法来检查是否存在关联对象而不必发出SQL查询?

编辑:

这是一个HABTM关系,所以Rail的counter_cache显然在这里不起作用。

1 个答案:

答案 0 :(得分:0)

将“counter_managers_count”计数器缓存添加到“场地”将是最高效的方法。

您可以在Venue中创建范围:

scope :with_managers, -> { where('venue_managers_count > 0') }

并像这样查询场地:

venue_with_managers = Venue.with_managers