0

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

4

1 回答 1

0

找到了!

看起来merge可以使用: http ://api.rubyonrails.org/classes/ActiveRecord/SpawnMethods.html#method-i-merge

于 2013-10-01T19:51:13.263 回答