用户名
enum gender: [:Male, :Female]
belongs_to :qualification
资格证书.rb
has_many :users
当我查询
User.all.group(:gender).count.map { |k, v| [User.genders.key(k), v] }.to_h
它给了我
{"Male"=>18, "Female"=>1}
但是我不知道要为资格做同样的事情,因为协会参与其中。我怎么做?
User.all.group(:qualification_id).count.map { ??? }
最佳答案
您可以使用 joins()
和关联名称在关联模型之间执行连接,然后按连接模型的任何列进行分组。
例如,如果您想按 name
列进行分组:
User.joins(:qualification).group('qualifications.name').count
在
:qualification
方法中使用符号 joins
描述关系,但在 'qualifications'
方法中使用表名 group
以指定列。这将生成一个像这样的 SQL 请求:SELECT COUNT(users.id)
FROM users
INNER JOIN qualifications ON users.qualification_id = qualifications.id
GROUP BY qualifications.name
joins
):http://guides.rubyonrails.org/active_record_querying.html JOINS
: http://www.w3schools.com/sql/sql_join.asp 关于ruby-on-rails - 在belongs_to 关联rails 中的组函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35086845/