mpa*_*tan 3 ruby sql postgresql activerecord ruby-on-rails
这应该是一个简单的查询,但我遇到了正确的Rails语法问题.我正在使用Rails 4.1.1和Postgresql(9.3).我有一个模型用户和模型公司.用户有一家公司,公司有很多用户.我正在努力寻找拥有超过5个用户的所有公司.
class Company < ActiveRecord::Base
has_many :users, dependent: :destroy
...
class User < ActiveRecord::Base
belongs_to :company
...
Run Code Online (Sandbox Code Playgroud)
问题与此类似:查找计数大于零的所有记录
如果我尝试上面提到的类似解决方案:
Company.joins(:users).group("company.id").having("count(users.id)>5")
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误:
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "company"
LINE 1: ... "users"."company_id" = "companies"."id" GROUP BY company.id...
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几个不同的查询来获得结果,但我没有这样做.我可以使用SQL,但它似乎很愚蠢,因为这应该可以使用ActiveRecord轻松实现.
感谢所有的答复 :)
应该用"companies.id"而不是"company.id".
Company.joins(:users).group("companies.id").having("count(users.id)>5")
Run Code Online (Sandbox Code Playgroud)
如果你想与0个用户建立公司,你必须使用LEFT JOIN:
Company.joins('LEFT JOIN users ON companies.id = users.company_id').group("companies.id").having("count(users.id) = 0")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1845 次 |
| 最近记录: |