我想选择最多用户使用的资源。
模型:
class Resource < ActiveRecord::Base
has_many :users, :through => :kits
has_many :kits
class User < ActiveRecord::Base
has_many :resources, :through => :kits
has_many :kits, :dependent => :destroy
class Kit < ActiveRecord::Base
belongs_to :resource
belongs_to :user
我想创建一个范围来选择那些 resource.users.count > 3 的资源
我怎样才能在 Rails 中做到这一点?
谢谢
我正在接近但仍有一些问题:
scope :most, group('resources.id, resources.title, resources.url, resources.description, resources.author, resources.price, resources.created_at, resources.updated_at').joins(:users).having("count(user_id) > ?",5)
我必须包含资源的所有字段,因为 Postgresql 给出如下错误:
ActiveRecord::StatementInvalid: PG::Error: ERROR: column "resources.category_id" must appear in the GROUP BY clause or be used in an aggregate function
必须有一种方法可以包含所有字段,而不必输入每个字段