Я копал, но не могу найти ответ, который имеет смысл для меня. У меня есть одна таблица "groups", которая является просто идентификатором и именем. У меня есть другие таблицы, которые по-разному используют эти группы.
GROUPS {id, name}
INCIDENTS {id, reportedby_group_id, assignee_group_id, resolving_group_id}
Мои модели настроены таким образом:
class Group < ActiveRecord::Base
has_many :incidents
end
class Incident < ActiveRecord::Base
belongs_to :reportedby_group, :class_name => 'Group', :foreign_key => 'reportedby_group_id'
belongs_to :resolving_group, :class_name => 'Group', :foreign_key => 'resolving_group_id'
belongs_to :assignee_group, :class_name => 'Group', :foreign_key => 'assignee_group_id'
end
То, что я хотел бы сделать, это запросить все инциденты, которые содержат определенную «группу разрешения», «группы назначенных лиц» и т. Д. По отдельности, например:
Incident.joins(:resolving_group).where(:resolving_group => {:name => groups(arr)})
Однако, когда я пытаюсь выполнить вышеупомянутый запрос, ему не удается связать Group.name с разрешающей группой, он выдает следующий запрос:
SELECT `incidents`.* FROM `incidents` INNER JOIN `groups` ON `groups`.`id` = `incidents`.`resolving_group_id` WHERE `resolving_group`.`name` IN (
Когда я ищу что-то вроде этого:
SELECT `incidents`.* FROM `incidents` INNER JOIN `groups` ON `groups`.`id` = `incidents`.`resolving_group_id` WHERE `group`.`name` IN (