在Rails 4中使用postgres数组,如何返回数组中所有唯一项的数组?

cba*_*ass 3 ruby postgresql ruby-on-rails rails-postgresql ruby-on-rails-4

我的迁移看起来像这样:

create table :posts do |t|
    t.string :tags, array: true, default: []
end
Run Code Online (Sandbox Code Playgroud)

如何在所有帖子中获取存储在标签下的所有唯一标签的数组?

mu *_*ort 8

您可以在数据库中执行以下操作:

select distinct unnest(tags) from posts
Run Code Online (Sandbox Code Playgroud)

因此,如果您只想要字符串,那么您可以直接访问数据库:

tags = Post.connection.select_rows('select distinct unnest(tags) from posts').flatten
Run Code Online (Sandbox Code Playgroud)

如果tags阵列或许多阵列之间存在很多重叠,那么应该更快,然后将所有阵列拉出数据库并在Ruby中进行数据争用.