我有一个验证器为EmailValidator和类用户:Rails3:validates_with,我应该把MyValidator放在什么地方?
class EmailValidator < ActiveModel::Validator
def validate(record)
record.errors[:base] << "error" unless record.email.scan("@")
end
class User < ActiveRecord::Base
validates_with EmailValidator
end
如果我把为EmailValidator定义在lib /目录下单独的文件,或在user.rb后用户类定义我得到一个错误:
/usr/lib/ruby/gems/svn/gems/rspec-core-2.0.0.beta.16/lib/rspec/core/backward_compatibility.rb:20:in `const_missing': uninitialized constant User::EmailValidator (NameError)
但是,如果我把用户定义之前的EmailValidator定义在user.rb中,就像在上面的例子中那样就没关系。
在什么地方我应该把EmailValidator?
这是错误吗?这不是本地的灵魂...... – petRUShka 2010-07-14 12:23:21
不知道这个在rails3中,我知道在轨道2.3中的文件lib /在应用程序的某些部分使用时是懒加载的。顺便解决了我的问题:P – 2010-07-14 12:31:00
关于运行RSpec的问题,我遇到了同样的问题。将Rails.root添加到我的路径中,一切正常:config.autoload_paths + =%W(#{Rails.root}/lib/initializers) – 2010-12-17 03:40:26