【发布时间】:2017-07-22 14:07:55
【问题描述】:
我有一个foo 表,其中有许多bars。如何找到所有foos 超过 5 个bars?我在想Foo.where(bar.length > 5) 之类的东西,但没用。
【问题讨论】:
标签: ruby-on-rails rails-activerecord
我有一个foo 表,其中有许多bars。如何找到所有foos 超过 5 个bars?我在想Foo.where(bar.length > 5) 之类的东西,但没用。
【问题讨论】:
标签: ruby-on-rails rails-activerecord
检查
Foo.joins(:bars).group('foos.id').having('COUNT(bars.foo_id) > 5')
【讨论】:
您可以使用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 > 5)
这个question 可能相关
【讨论】: