【发布时间】:2020-12-07 02:24:23
【问题描述】:
我有以下模型和关联:
class Role < ApplicationRecord
belongs_to :project
has_many :collaborators, dependent: :destroy
has_many :users, through: :collaborators
scope :open_roles, -> { joins(:collaborators).where(role: { collaborator_id: nil })}
end
我希望能够调用 Role.open_roles 并检索所有未指定协作者的角色。
我使用的范围返回 0 个结果,我看到服务器端的查询不正确:
SELECT "roles".* FROM "roles" WHERE "roles"."id" IS NULL
我写的范围有什么问题?
【问题讨论】:
-
Joins 是一个代表“INNER join”,记录必须存在于两个表中。您需要执行“左连接”。在 Rails 5 中,您应该能够将
.joins替换为.left_outer_joins
标签: sql ruby-on-rails database scope