我正在尝试研究如何使用活动记录来返回基于嵌套模型的数据。
我的关系设置如下:
我可以通过以下书籍访问用户:
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