>> p = Person.create => #<Person id: nil, name: nil> >> p.errors => #<ActiveRecord::Errors..., @errors={"name"=>["can't be blank"]}>
>> p.save => false
>> p.save! => ActiveRecord::RecordInvalid: Validation failed: Name can't be blank
>> Person.create! => ActiveRecord::RecordInvalid: Validation failed: Name can't be blank
invalid?是valid?的逆操作。如果添加对产生错误,就触发验证并回true。
2.5 errors.invalid? 为了验证对象的属性是否为有效,可有使用erros.invalid?方法。这个方法仅在验证之后运行。因为它仅检查错误,并不触发验证。这和ActiveRecord::Base:invalid?方法是不同的,因为它不检查数据的有效性。它仅检测对象的具体属性是否有错误。 class Person < ActiveRecord::Base validates_presence_of :name end