查询模型时有2个连接

时间:2013-01-11 23:58:10

标签: sql ruby-on-rails ruby-on-rails-3 rails-activerecord

我有这个方法,它返回属于该类别的书籍的所有类别和组

def self.user_categories_list
joins(:books).
select('categories.id, categories.name, count(*) AS books_count').
group('categories.id, categories.name').
order('books_count DESC')
end

请原谅我的问题,但我不确定如何加入用户表以按类别获取属于用户的所有书籍,或者我可以通过属于用户的book_id来完成吗?

任何帮助表示赞赏

由于

1 个答案:

答案 0 :(得分:1)

我认为你应该有一个where子句:

def self.user_categories_list(user)
  joins(:books).
  where('books.user_id = ?', user.try(:id) || user).
  select('categories.id, categories.name, count(*) AS books_count').
  group('categories.id, categories.name').
  order('books_count DESC')
end

注意:此代码假定您的图书模型在其表格中具有user_id属性。