如何使用多个范围构建查询?

时间:2013-10-01 19:12:38

标签: ruby-on-rails activerecord

首先:假设我有一个User类,并希望在User类之外创建User范围。例如,我有一个Book类,我希望它为想要阅读该书的用户返回一个范围:

class Book < ActiveRecord::Base

  def interested_users
    Users.scoped.where(sql_for_they_would_like_to_read_this_book)
  end
end

现在,假设我有一系列书籍,我想为想要阅读所有书籍的用户创建一个范围。如何将这几个范围一起应用?

def union_scopes(scope1, scope2)
  ???
end

would_like_to_read_all_books = User.scope
books.each do |book|
  would_like_to_read_all_books = union_scopes(user_scope, book.interested_users)
end

我知道如果范围是在用户上定义的,我可以做 User.interested_in_book(book1).interested_in_book(book2) ... 但那不是我想要的地方。

1 个答案:

答案 0 :(得分:0)