具有关系和枚举的复杂ActiveRecord查询

时间:2015-07-28 18:00:06

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord

我正在尝试为我的模型构建一个范围,但是当中间存在关系时,我不太善于进行查询。

如何查询状态为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

1 个答案:

答案 0 :(得分:2)

这样的事情:

Book.includes(:requests)
  .where("requests.status <> 'completed' OR requests.id IS NULL")

includes使用LEFT JOIN表生成requests。然后,您使用纯SQL查询没有请求的图书或请求未完成的图书。