【问题标题】:Rails active record query table by number of its associationsRails 按关联数查询表的活动记录
【发布时间】:2017-07-22 14:07:55
【问题描述】:

我有一个foo 表,其中有许多bars。如何找到所有foos 超过 5 个bars?我在想Foo.where(bar.length > 5) 之类的东西,但没用。

【问题讨论】:

    标签: ruby-on-rails rails-activerecord


    【解决方案1】:

    检查

    Foo.joins(:bars).group('foos.id').having('COUNT(bars.foo_id) > 5')
    

    【讨论】:

      【解决方案2】:

      您可以使用counter_cache先添加此代码并添加新列

      class Bar < ActiveRecord::Base
        belongs_to :Foo, counter_cache: true
        # ...
      end
      
      # add a migration
      add_column :Foo, :bars_count, :integer, default: 0
      

      然后你可以执行

      Foo.where(:bars_count &gt; 5)

      这个question 可能相关

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-01
        • 1970-01-01
        相关资源
        最近更新 更多