在Ruby on Rails中,.save()如果数组是空的,那么带有序列化数组字段的模型将不会更新,之前它有数据.
我正在使用:
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)