首先:假设我有一个 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) ...
,但这不是我想要的。