在 theme.rb 中,存在以下代码:
ChildTheme.where(parent_theme_id: theme_id).distinct.pluck(:child_theme_id),其中的 distinct 可以移除,因为已在 discourse/db/migrate/20170313192741_add_themes.rb 中添加了唯一索引:add_index :child_themes, [:parent_theme_id, :child_theme_id], unique: true。
这意味着,对于两个子主题:ChildTheme1(id1, child_theme_id1, parent_theme_id) 和 ChildTheme2(id2, child_theme_id2, parent_theme_id),如果 child_theme_id1 等于 child_theme_id2,则 id1 必然等于 id2;否则 [:parent_theme_id, :child_theme_id] 将不满足唯一性约束。因此,ChildTheme.where(parent_theme_id: theme_id).pluck(:child_theme_id) 返回的 child_theme_id 已经是唯一的,无需再调用 distinct 函数。我们可以移除它以提升性能。