【发布时间】:2014-05-15 01:52:47
【问题描述】:
假设我有两个模特帖子和类别。
发布 has_many 类别
现在,我想根据类别搜索帖子?
例子:
帖子 1 的类别为 2、5、6
帖子 2 的类别为 5,9
帖子 3 的类别为 2、4、8
现在在搜索用户选择类别 2,4,8
在结果页面中这样显示
发布 3
发布 1
有什么想法吗?
【问题讨论】:
标签: ruby ruby-on-rails-3 search activerecord associations
假设我有两个模特帖子和类别。
发布 has_many 类别
现在,我想根据类别搜索帖子?
例子:
帖子 1 的类别为 2、5、6
帖子 2 的类别为 5,9
帖子 3 的类别为 2、4、8
现在在搜索用户选择类别 2,4,8
在结果页面中这样显示
发布 3
发布 1
有什么想法吗?
【问题讨论】:
标签: ruby ruby-on-rails-3 search activerecord associations
你可以试试:
class Post
def self.with_categories(*category_ids)
joins(:categories).where(categories: {id: category_ids}).select("#{table_name}.*, COUNT(#{Category.table_name}.id AS match_count").group("#{table_name}.id").order(:match_count)
end
end
Post.with_categories(2,4,8)
【讨论】:
table_name 是在 ActiveRecord 类上定义的方法,返回用于给定模型的表的名称。在大多数情况下,它只是类的复数下划线名称,但并非总是如此(例如,如果您使用 STI)