我正在尝试通过辅助模型找到从has_and_belongs_to_many关联获取数据的方法。我现在会说抱歉,因为我可能不会解释这一点,所以最好我只是展示协会和我需要做的事情。我正在使用Rails 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
App / Incidents Join Table:
class CreateJoinTableAppsIncidents < ActiveRecord::Migration[5.1]
def change
create_join_table :apps, :incidents do |t|
t.index [:incident_id, :app_id]
end
end
end
答案 0 :(得分:0)
您可以使用uniq_by
class Service
has_many :apps
has_many :incidents, through: :apps
end
然后你可以做
@my_service.incidents.uniq_by(&:incident_id)
答案 1 :(得分:0)
将incidents
添加到您的Service
class Service
has_many :apps
has_many :incidents, through: :apps
end
然后
@service.incidents.uniq
OR
@service.incidents.distinct
这应该做。