【发布时间】:2016-09-05 19:06:54
【问题描述】:
在阅读了(几乎)所有互联网之后,我需要您输入这个问题。
背景: 我有一个使用ActiveModel::Model 的non persisted Rails 4 model,根据其文档,包括ActiveModel::Validations
代码:
class GoodnessValidator < ActiveModel::Validator
def validate(record)
if record.first_name == "Evil"
record.errors[:base] << "This person is evil"
end
end
end
class Person
include ActiveModel::Model
include ActiveModel::Validations
validates_with GoodnessValidator
attr_accessor :first_name
end
问题:
当我创建一个新的Person 时,p = Person.new(first_name: 'Evil') 应该被验证是一个“邪恶的人”。所以,我期望像p.errors 这样的错误访问器应该返回一个Hash 并包含所有错误。
但是,始终为空,p.errors 不会返回任何内容。绝不。
[102] pry(main)> p = Person.new(first_name: 'Evil')
=> #<Person:0x007fa0925809f0 @first_name="Evil">
[103] pry(main)> p.errors
=> #<ActiveModel::Errors:0x007fa09173ac88 @base=#<Person:0x007fa0925809f0 @errors=#<ActiveModel::Errors:0x007fa09173ac88 ...>, @first_name="Evil">, @messages={}>
[104] pry(main)> p.errors.full_messages
=> []
[105] pry(main)>
【问题讨论】:
标签: ruby-on-rails validation ruby-on-rails-4 activemodel