DB是PostgreSQL。如何将所有记录的值附加到具有数组数据类型的列?
例如:
# migration_file.rb
def change
add_column :users, :tags, :string, array: true, default: []
end
如何将相同的值附加tags
到所有用户记录的属性中?我想做类似的事情:
User.update_all(tags << "some_tag")
您可以将SQL片段传递给,update_all
以便可以使用所有常用的PostgreSQL数组运算符。例如:
User.update_all(['tags = tags || ?::text', 'some_tag'])
或没有||
歧义(和相应的强制转换):
User.update_all(['tags = array_append(tags, ?)', 'some_tag'])
User.update_all(['tags = tags || array[?]', 'some_tag'])
请注意,update_all
在这种情况下,您将传递一个数组,您需要这样做才能说服AR您要'some_tag'
填充占位符而不是WHERE子句。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句