我正在尝试为我的模型构建一个范围,但是当中间存在关系时,我不太善于进行查询。
如何查询状态为Books
但没有Request
的所有:completed
?
Book.rb
class Book < ActiveRecord::Base
# Relationships
has_many :requests, dependent: :destroy
end
Request.rb
class Request < ActiveRecord::Base
# Relationships
belongs_to :book
# Enumerables
enum status: [:pending, :accepted, :completed]
end
答案 0 :(得分:2)
这样的事情:
Book.includes(:requests)
.where("requests.status <> 'completed' OR requests.id IS NULL")
includes
使用LEFT JOIN
表生成requests
。然后,您使用纯SQL
查询没有请求的图书或请求未完成的图书。