rails嵌套模型查询

时间:2012-05-30 08:49:32

标签: sqlite activerecord ruby-on-rails-3.2

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

我的关系设置如下:

  • 用户 - 有很多书
  • 预订 - 拥有众多用户
  • 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

0 个答案:

没有答案