【发布时间】:2016-11-09 18:05:47
【问题描述】:
我有一个模型的列看起来像这样(示例):
column = [{:A => "1", :B => "2"}, [a, b, c, ..., n]]
其中a、b、c 和n 也是哈希值,如下所示(示例):
a = {:X => "x", :Y => "y"}
目前,如果我调用模型的记录m,例如m.column[0][:A],它会返回=> "1"
如果我打电话给m.column[1][0] 我会得到a = {:X => "x", :Y => "y"}
到目前为止,一切都很好。
现在的问题是,我怎样才能得到模型的所有记录的数组,例如,column[0][:A] = "1"???
我正在尝试这样的事情(但它不起作用):
Model.where("column[0][:A] = ?", "1")
错误提示:
PG::SyntaxError: ERROR: syntax error at or near ":"
编辑:
column 是 text 数据类型
在它的模型中它有serialize :column, Array
【问题讨论】:
-
这个表到底是什么样子的,它的架构是什么?
column是数组列吗? JSONB?还有什么? -
我将使用该信息进行编辑
-
@muistooshort 你现在可以看到
-
您可以更改架构以便不使用
serialize吗?serialize是一个丑陋的杂物,它只会将一大堆 YAML 放入数据库中,因此您非常不走运,因为在 SQL 中解析 YAML 会非常不愉快。 -
我很乐意这样做,但使用
array数据类型我找不到以某种方式构建列的方法,因此我可以这样做m.column[0][:A]。它显示了一个错误。我需要能够做到这一点。 @muistooshort
标签: ruby-on-rails postgresql activerecord rails-activerecord