我有一個驗證器爲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