Еще один вопрос об ассоциации Rails - PullRequest
0 голосов
/ 08 апреля 2011

Я копал, но не могу найти ответ, который имеет смысл для меня. У меня есть одна таблица "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 (

1 Ответ

1 голос
/ 08 апреля 2011
Incident.joins(:resolving_group).where('group.name' => groups)

Не уверен, почему это не происходило со мной раньше.

...