Некоторые области действия моей модели юнитов:
class Unit < ApplicationRecord
scope :committees, -> { where(unit_type: UnitType.committee) }
scope :departments, -> { where(unit_type: UnitType.department) }
scope :faculties, -> { where(unit_type: UnitType.faculty) }
scope :programs, -> { where(unit_type: UnitType.program) }
scope :universities, -> { where(unit_type: UnitType.university) }
end
class UnitType < ApplicationRecord
enum group: {
other: 0,
university: 1,
faculty: 2,
department: 3,
program: 4,
committee: 5
}
end
Я хочу создать новую область с использованием других областей, например:
class Unit < ApplicationRecord
...
scope :for_curriculums, -> { universities.or(faculties).or(departments) }
scope :for_group_courses, -> { faculties.or(departments) }
...
end
Но в этом случае слишком много двойных-тройныхпроисходят комбинации.
Когда я использую параметр send, как в следующем коде, вместо метода or или выполняется метод 'и'.
class Unit < ApplicationRecord
...
# unit_types = ['faculties', 'departments']
def self.send_chain(unit_types)
unit_types.inject(self, :send)
end
end
Как это сделать, есть ли возможность