Rails 4.2或使用包含/连接的范围

时间:2016-01-09 17:34:55

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

给定具有关系的List模型:

has_many :list_group_memberships, dependent: :destroy
has_many :groups, through: :list_group_memberships
has_many :users, -> { unscope(:order).uniq }, through: :groups, source: :users

我的范围需要像这样工作:

includes(:users).where(recipient: user, secret: false).or(where(users: { id: user }))

RecipientsecretList模型的属性。

我使用where-or gem(Rails 5 AR or范围的后端)。

收到的错误是:

ArgumentError: Relation passed to #or must be structurally compatible

这种查询是否可以使用Rails'语法?

1 个答案:

答案 0 :(得分:0)

我假设用户是变量。

includes(:users).where("(recipient = ? AND secret = ?) OR users.id = ?", user, false, user)