用户.rb
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
在joins
方法中使用符号:qualification
描述关系,但在中使用表名
方法来指定列。这将生成如下 SQL 请求:'qualifications'
group
SELECT COUNT(users.id)
FROM users
INNER JOIN qualifications ON users.qualification_id = qualifications.id
GROUP BY qualifications.name
- ActiveRecord 文档(搜索
joins
):http://guides.rubyonrails.org/active_record_querying.html - SQL
JOINS
的解释:http://www.w3schools.com/sql/sql_join.asp
关于ruby-on-rails - belongs_to 关联栏中的组函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35086845/