下面是我在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",并且在您填写适当的值之前,无法从控制台保存对象。