我在两个模型之间有多对多关联:
class User < ActiveRecord::Base
has_many :user_works
has_many :works, through: :user_works
end
class UserWork < ActiveRecord::Base
belongs_to :user
belongs_to :work
end
class Work < ActiveRecord::Base
has_many :user_works
has_many :users, through: :user_works
end
我有一个按作品过滤器,包含多个作品(id)。
我的任务是按作品过滤用户并按匹配数对用户进行排序。
提前致谢。
我想你需要按作品分组,按数量排序
这就是如何从较少的作品到更多的作品进行排序:
User.joins(:works).group("user_works.user_id").order("COUNT(*)")
这就是如何从多到少排序:
User.joins(:works).group("user_works.user_id").order("COUNT(*) DESC")
Upd.如果你想要一些额外的过滤,只需添加 where 子句
User.joins(:works).where("user_works.work_id in #{filter_string}").group("user_works.user_id").order("COUNT(*) DESC")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)