2
用户可以提交资源并发表评论。按关联记录的数量排序记录
我想通过选择已提交资源和评论的用户来显示最活跃的用户,并将提交了最多资源和评论的用户的结果排序为最低。
**Resource**
has_many :users, :through => :kits
has_many :kits
belongs_to :submitter, class_name: "User"
**User**
has_many :resources, :through => :kits
has_many :kits
has_many :submitted_resources, class_name: "Resource", foreign_key: "submitter_id"
**Kits**
belongs_to :resource
belongs_to :user
**Comments**
belongs_to :user
我是新来的这种sql在Rails中。我怎样才能得到这个记录集?
谢谢Tanzeeb,我有一个问题。 1. def-method中是否应该有remove_column:users,:submitted_resources_count? 2.我得知我运行这个迁移,但是User.find_each做的方法是| u |将仅在此次迁移时运行。那么,我需要将它放在一个范围内还是放在应用程序的其他位置,以便在我需要找到最活跃的用户时运行? – chell 2012-07-16 15:03:17
伟大的问题。 1)是的。 down方法应该撤消,因为up会创建两列,down应该删除它们。 2)迁移中的更新设置了初始计数,但不需要再次调用。 Rails会自动更新匹配模式* _count的任何列与相应关联的计数。您可以使用第三个查询User.select ...作为类方法或范围来提取顶级用户。将限制(1)添加到链的末尾以仅获取顶级用户。 – 2012-07-17 04:40:00