即使输入数据,Rails验证也会失败

时间:2011-05-24 18:05:04

标签: ruby-on-rails ruby ruby-on-rails-3 validation

这是我在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。

任何想法?
谢谢!

2 个答案:

答案 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”,并且在填写适当的值之前无法从控制台保存对象。