小编hsi*_*dar的帖子

序列化时无法将空数组保存到数据库

在Ruby on Rails中,.save()如果数组是空的,那么带有序列化数组字段的模型将不会更新,之前它有数据.

我正在使用:

  • Ruby 2.2.1
  • Rails 4.2.1
  • sqlite3 1.3.10

    我创建了一个新的模型,其字段设置为文本:

    rails g model用户名:string example:text

在User.rb文件中,我添加了:

serialize :example, Array
Run Code Online (Sandbox Code Playgroud)

我实例化了User类的新实例:

test = User.new
<User id: nil, name: nil, example: [], created_at: nil, updated_at: nil>
Run Code Online (Sandbox Code Playgroud)

然后我保存用户以确保它正确保存:

test.save()
(0.1ms)  begin transaction
SQL (0.4ms)  INSERT INTO "users" ("created_at", "updated_at") VALUES (?, ?)  [["created_at", "2015-05-27 16:17:31.902342"], ["updated_at", "2015-05-27 16:17:31.902342"]]
(0.7ms)  commit transaction
=> true
Run Code Online (Sandbox Code Playgroud)

并添加了一些数据,以使其感到愉快和有目的:

test.example.push(1)
test.example.push(2)
Run Code Online (Sandbox Code Playgroud)

并保存起来:

test.save()
(0.1ms)  begin transaction
SQL (0.3ms)  UPDATE "users" SET "example" = ?, "updated_at" = …
Run Code Online (Sandbox Code Playgroud)

ruby arrays serialization ruby-on-rails

6
推荐指数
1
解决办法
930
查看次数

标签 统计

arrays ×1

ruby ×1

ruby-on-rails ×1

serialization ×1