Rails несколько соединений, разделенных или - PullRequest
0 голосов
/ 25 октября 2018

Мне нужен запрос, который выберет всех пользователей, у которых есть назначение (группа или просто назначение), которое соответствует условию.Это легко сделать в SQL, но результатом будет массив.Мне нужно, чтобы результат был ActiveRecord :: Relation, чтобы я мог применить больше областей к результату.

Обычно это так - "SELECT * from users JOINS assignments on (assignments.user_id = users.id) WHERE assignments.id > 5 OR JOINS group_assignments on (group_assignments.user_id = users.id) WHERE group_assignments.id > 5)"

Но я действительно не знаю, какчтобы сделать это, используя «соединения» или «включает» - область действия в «both_assignments» действительно не работает, и я не знаю, почему.

class User < ActiveRecord::Base
  has_many :assignments
  has_many :group_assignments

  scope :both_assignments, lambda {
   joins(:assignments).where(condition..)
     .or(joins(:group_assignments).where(condition...)
    }
end

class Assignment < ActiveRecord::Base
  belongs_to :user
end

class GroupAssignment < ActiveRecord::Base
  belongs_to :user
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...