Ruby on rails 计算具有特定关联的对象数量的Ruby代码

Ruby on rails 计算具有特定关联的对象数量的Ruby代码,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我的每个应用程序用户都可以有多个通行证。每个通道可以属于一条路线。过程可以是活动的,也可以是非活动的 我想统计属于特定路线的具有“活动”属性的通行证的用户数量 做这件事最好的方法是什么 谢谢大家! 我犹豫着回答,因为我没有看到投入努力的例子,但是 我会这样做,因为这些看起来也很有用 class User ... has_many :routes, through: :passes scope :with_active_passes, ->{joins(:passes).wher

我的每个应用程序用户都可以有多个通行证。每个通道可以属于一条路线。过程可以是活动的,也可以是非活动的

我想统计属于特定路线的具有“活动”属性的通行证的用户数量

做这件事最好的方法是什么


谢谢大家!

我犹豫着回答,因为我没有看到投入努力的例子,但是

我会这样做,因为这些看起来也很有用

class User
  ...
  has_many :routes, through: :passes
  scope :with_active_passes, ->{joins(:passes).where(passes:{active: true})}
  scope :by_route, ->(route){joins(:routes).where("routes.route_id = ?", route)}
end
然后你可以打电话给我

User.with_active_passes.by_route(route_id)
这也将允许您单独使用

User.with_active_passes #only users with active passes
User.by_route(route_id) # only users with passes that have a specific route_id
User.with_active_passes.by_route(route_id) # only users with active passes that have a specific route_id

此外,您还可以将route#u id更改为route中的任何列,而route不必是id。要了解有多少列,只需将
#size
#count
添加到方法链的末尾即可。

谢谢。正如我所怀疑的,我是以完全错误的方式进行的,将“where”方法链接起来。。。所以撇开证据不足不谈,我的努力被误导了。