Rails ActiveRecord对象不保存

kid*_*rew 5 activerecord ruby-on-rails

我有这个存储序列化对象的表:

class CachedObject < ActiveRecord::Base
  attr_accessible :key, :data
  validates_uniqueness_of :key
end
Run Code Online (Sandbox Code Playgroud)

数据列存储由key索引的序列化对象.很简单.我正在运行此代码来测试:

key = "test"
obj = {"test" => "test"}
row = CachedObject.find_or_create_by_key key
row.data = obj.to_json
row.save
Run Code Online (Sandbox Code Playgroud)

该对象正在创建,但它不会保存回数据库.没有错误消息.我在这做错了什么?

One*_*ude 11

  1. .save返回truefalse..save!引发错误.如果您需要知道某些(有些)详细消息出现问题的原因,请使用.save!.

  2. 如果key不是唯一的,则不会保存数据,因为模型不会通过验证.尝试运行Model.where(:key => 'test').destroy_all并重新评估.