1

我正在尝试研究如何使用活动记录基于嵌套模型返回一些数据。

我的关系设置如下:

  • 用户 - 有很多书
  • 图书 - 有很多用户
  • UserBook - 属于用户,属于书

我可以通过这样的书籍访问用户:

  • book.users.first

  • book.users.second

等等

我想选择所有没有特定用户的书籍。

我已经生成了这样的查询,请注意,'near' 方法是由 Geocoder gem 提供的。

Book.near(location, distance).joins(:users).where("users.id != #{@current_user.id}")

我相信语法是正确的,没有发生错误,但是,查询仍然返回当前用户的书籍。

问题似乎是,如果 book.users 包含不是当前用户 id 的用户 id 并且还包含当前用户 id,则仍然返回 book。

我可以使用这样的代码获得所需的结果,但我认为有一种方法可以让 ActiveRecord 为我做这件事。

search = Book.near(location, distance).reject do |book|
    if book.users.include?(@current_user)
        book
    end
end
4

0 回答 0