这是我正在尝试运行的查询:
Stack.joins(:services)
.select('stacks.id, stacks.name, count(services.id) as services_count')
.group('stacks.id').having('services_count > 2')
我得到的错误是:
ActiveRecord :: StatementInvalid:PG :: UndefinedColumn:ERROR:列“services_count”不存在 第1行:... ack_items“。”service_id“GROUP BY stacks.id HAVING services_c ...
以下是我的Stack模型的相关信息:
class Stack < ActiveRecord::Base
has_many :services, through: :stack_items
end
class StackItem < ActiveRecord::Base
belongs_to :service
belongs_to :stack
end
class Service < ActiveRecord::Base
has_many :stacks, through: :stack_items, dependent: :destroy
end
我只想获得一个Stacks
的集合,其中至少有3个堆栈项目service.weight == 1
。
有什么建议吗?
答案 0 :(得分:0)
您在Postgres的SELECT
列表中设置的别名在group by
子句中不可用,因此只需将.having('services_count > 2')
更改为.having('count(services.id) > 2')
。