【问题标题】:Ruby Sequel: Array returned by query is being returned as a String object, not an Array objectRuby Sequel:查询返回的数组作为字符串对象返回,而不是数组对象
【发布时间】:2018-08-12 07:43:52
【问题描述】:

我正在使用 Ruby Sequel 的 pg_array 扩展。

当我选择一个 Postgresql 数组的列时,结果是 Ruby 中的一个字符串。我如何让它成为一个 Ruby 数组,以便我可以在上面使用 .each 之类的东西?

CaseTypeCategory.first(category_name: 'Subscription')[:values]
=> "{value_one,value_two}"

CaseTypeCategory.first(category_name: 'Subscription')[:values][0]
=> "{"

我们的数据库配置包括:

Sequel.extension :pg_array, :pg_inet, :pg_json

添加列的迁移包括:

alter_table :case_type_categories do
  add_column :values, "text[]"
end

我可以编写原始 SQL 来访问数组中的单个元素:

select values[1] from case_type_categories where category_name = 'Subscription'

【问题讨论】:

  • 请编辑您的问题以包含您配置 Sequel 以使用此列的 pg_array 扩展名的代码。
  • @JordanRunning 这就是你要找的吗?

标签: ruby postgresql sequel


【解决方案1】:

您需要使用DB.extension :pg_array, :pg_inet, :pg_json,而不是Sequel.extension :pg_array, :pg_inet, :pg_json。否则,您只需要文件而不修改 Sequel::Database 实例的配置。

【讨论】:

  • 太棒了,谢谢。只是为了确认:DB = Sequel::Model.db 对吗?
猜你喜欢
  • 2021-12-02
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2013-02-23
  • 2020-04-11
  • 2018-07-05
相关资源
最近更新 更多