Люди,
Я не могу заставить validates_with
в моем (helloworld-y) приложении rails работать. Прочитайте раздел «обратные вызовы и валидаторы» оригинального сайта руководств RoR и выполнили поиск в stackoverflow, но ничего не нашли.
Вот урезанная версия кода, которую я получил после удаления всего, что может дать сбой.
class BareBonesValidator < ActiveModel::Validator
def validate
# irrelevant logic. whatever i put here raises the same error - even no logic at all
end
end
class Unvalidable < ActiveRecord::Base
validates_with BareBonesValidator
end
Похоже на пример из учебника, верно? У них очень похожий фрагмент на направляющих RoR . Затем мы идем к rails console
и получаем ArgumentError при проверке новой записи:
ruby-1.9.2-p180 :022 > o = Unvalidable.new
=> #<Unvalidable id: nil, name: nil, created_at: nil, updated_at: nil>
ruby-1.9.2-p180 :023 > o.save
ArgumentError: wrong number of arguments (1 for 0)
from /Users/ujn/src/yes/app/models/unvalidable.rb:3:in `validate'
from /Users/ujn/.rvm/gems/ruby-1.9.2-p180@wimmie/gems/activesupport-3.0.7/lib/active_support/callbacks.rb:315:in `_callback_before_43'
Я знаю, что что-то упустил, но что?
(Примечание: чтобы не помещать BareBonesValidator
в отдельный файл, я оставил его поверх model/unvalidable.rb
).