カスタムバリデーターを自分のモデル issue.rb に適用しようとしています:
class Issue < ActiveRecord::Base
attr_accessible :description, :no_followers, :title
validates_presence_of :title
validates_uniqueness_of :title, message: "Title should be unique!"
validates_length_of :description, minimum: 10, maximum: 50
validates_numericality_of :no_followers, allow_blank: true
validates_with YesNoValidator
end
バリデーターは app/validators にあるファイルで、以下が含まれています。
class YesNoValidator < ActiveModel::Validator
def validate record
if record.title.include? "yes" && record.description.include? "No"
record.errors[:title] << "Title has the word yes and description has the word no"
end
end
end
また、libフォルダー内に配置しようとしましたが、このエラーも発生します:
Routing Error
uninitialized constant Issue::YesNoValidator
ランダムにF5を押すと、時々このエラーが発生します:
NoMethodError in IssuesController#new
undefined method `key?' for nil:NilClass
そのため、クラスを含むファイルがロードされていないように見えるので、lib と app/validators フォルダーの両方を application.rb の autoload_paths に追加してみました。しかし、これもうまくいきません..
誰もこれを経験したことがありますか?