Я пытаюсь найти способ получить данные из ассоциации has_and_belongs_to_many через вторичную модель. Сейчас я извиняюсь, так как я могу не объяснить это правильно, поэтому лучше всего я просто покажу ассоциации и то, что мне нужно сделать. Я использую Рельсы 5.
У меня есть:
Модель инцидента:
incident has_and_belongs_to_many :apps
Модель приложений:
app has_and_belongs_to_many :incidents
app belongs_to :service
Модель обслуживания:
has_many :apps
Что я хочу найти для моего сервиса, так это то, в какие Инциденты он был вовлечен через имеющиеся у него приложения, но мне нужны только уникальные Инциденты.
Есть ли способ сделать @service.apps_incidents.unique
и получить список уникальных инцидентов.
Мои миграции выглядят так:
Сервисная таблица:
class CreateServices < ActiveRecord::Migration[5.1]
def change
create_table :services do |t|
t.string :name
t.timestamps
end
end
end
Таблица приложений:
class CreateApps < ActiveRecord::Migration[5.1]
def change
create_table :apps do |t|
t.string :name
t.references :service, foreign_key: true
t.timestamps
end
end
end
Таблица происшествий:
class CreateIncidents < ActiveRecord::Migration[5.1]
def change
create_table :incidents do |t|
t.string :name
t.timestamps
end
end
end
Приложение/инциденты присоединиться к таблице:
class CreateJoinTableAppsIncidents < ActiveRecord::Migration[5.1]
def change
create_join_table :apps, :incidents do |t|
t.index [:incident_id, :app_id]
end
end
end