这是我在Rails控制台中执行的命令:
Person.create!(:firstName=>"matt", :lastName=>"master", :gender => 1)
我的结果是此错误消息:
ActiveRecord::RecordInvalid: Validation failed: Firstname can't be blank
我的模型验证代码如下:
class Person < ActiveRecord::Base
belongs_to :user, :class_name => 'User', :foreign_key => 'fk_ssmUserId'
validates_presence_of :firstName, :lastName
当我注释掉validates_presence_of
时,一切正常,我的数据正确输入到数据库中,所以我知道这些值实际上是传递给新对象的。我甚至检查了在Rails :: ActiveRecord :: Validations代码中创建的新对象,以确保在保存之前正确实例化它。它是。另外,我还有其他一些带有validates_presence_of的模型,每次都可以100%正常工作。这只是一个模型。我正在使用Rails 3.1.0.rc1。
任何想法?
谢谢!
答案 0 :(得分:0)
:firstName=>"matt", :lastName=>"master", :gender => 1
检查密钥是否与您的模型列相对应。似乎一切都应该没问题。
答案 1 :(得分:0)
我怀疑此错误与您使用 .create!方法 从控制台 <创建和保存对象的事实有关/ strong>即可。您的 Person 类似乎需要一个外键,这个值在控制台创建对象时可能没有实例化。要测试这一点,请尝试输入:
test = Person.create(:firstName=>"matt", :lastName=>"master", :gender => 1)
在.create方法之后没有爆炸。这不应该生成错误。现在输入:
test
您很可能需要将键值设置为“nil”,并且在填写适当的值之前无法从控制台保存对象。