Has*_*mad 2 ruby enums activerecord ruby-on-rails
user.rb
enum gender: [:Male, :Female]
belongs_to :qualification
Run Code Online (Sandbox Code Playgroud)
资格证书
has_many :users
Run Code Online (Sandbox Code Playgroud)
当我查询
User.all.group(:gender).count.map { |k, v| [User.genders.key(k), v] }.to_h
Run Code Online (Sandbox Code Playgroud)
它给我
{"Male"=>18, "Female"=>1}
Run Code Online (Sandbox Code Playgroud)
但是我不知道要为资格做同样的事情,因为其中涉及到联想,我该怎么做?
User.all.group(:qualification_id).count.map { ??? }
Run Code Online (Sandbox Code Playgroud)
您可以通过使用关联joins() 名称在关联的模型之间执行联接,然后按联接的模型的任何列进行分组。
例如,如果name 要按资格列分组:
User.joins(:qualification).group('qualifications.name').count
Run Code Online (Sandbox Code Playgroud)
:qualification在joins方法中使用描述关系的符号,但'qualifications'在group方法中使用表名以指定列。这将生成一个如下的SQL请求:
SELECT COUNT(users.id)
FROM users
INNER JOIN qualifications ON users.qualification_id = qualifications.id
GROUP BY qualifications.name
Run Code Online (Sandbox Code Playgroud)
joins):http : //guides.rubyonrails.org/active_record_querying.htmlJOINS:http://www.w3schools.com/sql/sql_join.asp| 归档时间: |
|
| 查看次数: |
3374 次 |
| 最近记录: |