我正在尝试使用Arrays,我的数据库是PostgreSQL。我做了以下迁移。
add_column :articles, :tags, :text, array: true, default: []
add_index :articles, :tags, using: 'gin'
这些信息可能有助于检查:
> rails db
psql (9.3.12)
Type "help" for help.
并在rails控制台中:
irb(main):087:0* article.tags.class
=> ActiveSupport::HashWithIndifferentAccess
当我通过psql检查它时:
Column | Type |
----------------+-----------------------------+------------------------
tags | text[] | default '{}'::text[]
所以,似乎一切都好,但我有一个问题是保存数据。我在rails控制台中尝试了不同的方法,例如:
Article.create(author: "test", tags: ["2", "3"])
和
irb(main):074:0> article.tags = ['3']
=> ["3"]
irb(main):081:0> article.tags_will_change!
=> {}
但结果是什么,标签仍然是空的! (tags: {}
)
此外,由于以下错误,我无法在控制台中使用+=
,<<
和push
方法:
NoMethodError: undefined method `push' for {}:ActiveSupport::HashWithIndifferentAccess
任何人都可以提供帮助?解决方案是什么?