【发布时间】:2018-05-16 02:59:00
【问题描述】:
我有一个带有序列化文本列的模型。当我保存并重新加载记录时,这些值似乎仍然存在,但当我查询记录时,这些值消失了。
(为简单起见,以下演示被截断)
class Subscription < ActiveRecord::Base
serialize :pending_changes, Hash
attr_accessible :pending_changes
attr_accessor :pending_changes
end
class AddPendingChangesToSubscriptions < ActiveRecord::Migration
def change
add_column :subscriptions, :pending_changes, :text
end
end
s = Subscription.new
s.pending_changes = {foo: "bar"}
s.save
# => true
s.reload.pending_changes
# => {foo: "bar"}
Subscription.last.pending_changes
# => nil
将{"foo" => "bar"} 保存为值时也会发生同样的情况。
我也注意到当save被调用时,得到的SQL查询如下:
UPDATE 'subscriptions' SET 'updated_at' = '2017-12-01 23:46:05', 'pending_changes' = '--- {}\n' WHERE 'subscriptions'.'id' = 2
根据类似问题的答案,我已确保 db 列数据类型为 text,并且我尝试使用 serialize :column_name 和不附加 Hash。
【问题讨论】:
标签: mysql ruby-on-rails ruby ruby-on-rails-3 serialization