Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么ActiveRecord在将字符串解析为数组属性的数据时会省略最后一个元素?_Ruby On Rails_Postgresql_Rails Activerecord_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 为什么ActiveRecord在将字符串解析为数组属性的数据时会省略最后一个元素?

Ruby on rails 为什么ActiveRecord在将字符串解析为数组属性的数据时会省略最后一个元素?,ruby-on-rails,postgresql,rails-activerecord,ruby-on-rails-5,Ruby On Rails,Postgresql,Rails Activerecord,Ruby On Rails 5,我在用Postgres。我有一个带有整数数组列的ActiveRecord模型,如下所示: t.integer "foo", array: true 如果我给它分配了一个ruby数组,它将按预期工作: > @instance.foo = [6,7,8,9,1] > @instance.foo => [6, 7, 8, 9, 1] 但是,如果我为这个数组指定一个字符串表示,它似乎试图解析数据,但由于某种原因,它总是忽略最后一个元素 > @instance.foo = "[

我在用Postgres。我有一个带有整数数组列的ActiveRecord模型,如下所示:

t.integer "foo", array: true
如果我给它分配了一个ruby数组,它将按预期工作:

> @instance.foo = [6,7,8,9,1]
> @instance.foo
=> [6, 7, 8, 9, 1]
但是,如果我为这个数组指定一个字符串表示,它似乎试图解析数据,但由于某种原因,它总是忽略最后一个元素

> @instance.foo = "[6,7,8,9,1]"
> @instance.foo
=> [6, 7, 8, 9]

为什么会发生这种情况?

这是哪个版本的Rails?我对Rails4.2的快速“脏”测试给了我
@instance.foo
成为
[]
。版本是rails 5。我真的很好奇为什么你希望
@instance.foo=“[6,7,8,9,1]”
做任何明智的事情。我希望会有例外,但似乎
pg
gem反而盲目地陷入混乱。如果您一直跟踪代码,直到实际解析发生的位置,您会看到它正在以字符串格式在通常的PostgreSQL数组中寻找字符串(
{6,7,8,9,1}
)。嗯,Rails似乎正在混合MVC层,因为它试图让模型完成控制器的工作,并且把它搞砸了。它使用的文本解码器不是用来处理用户输入,而是用来处理数据库输出。@muistooshort我同意,我很惊讶它竟然试图处理这个问题。