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



下面是我在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%正常工作。这只是一个模型。我使用的是Rails3.1.0.rc1。

有什么想法吗
谢谢

:firstName=>"matt", :lastName=>"master", :gender => 1

检查键是否与模型列相对应。似乎一切都应该好起来。

我怀疑这个错误与您使用.create方法从控制台。您的Person类似乎需要一个外键,当您在控制台创建对象时,这个值可能没有被实例化。要测试这一点,请尝试键入:

test = Person.create(:firstName=>"matt", :lastName=>"master", :gender => 1)

在.create方法之后没有爆炸。这不应该产生错误。现在类型:

test

很可能您已经将所需的键值设置为"nil",并且在您填写适当的值之前,无法从控制台保存对象。

相关内容

  • 没有找到相关文章

最新更新