#ruby-on-rails-3 #validation
#ruby-on-rails-3 #проверка
Вопрос:
я хочу вызвать метод проверки активной записи в моем пользовательском методе проверки, например
class Asset < ActiveRecord::Base
validate :ensure_unique_identification_code
validates :name,:uniqueness=>true
def ensure_unique_identification_code
self.identifier="identifier code" #code is generated using some helper method of Asset model
validates :identifier ,:uniqueness=>true
end
end
выдает ошибку
undefined method `validates' for #<Asset:0xb6692dbc>
как мы можем вызывать методы проверки в методах экземпляра модели
Комментарии:
1. Вероятно, это не решение, но вы уверены, что используете Rails 3? Проверка уникальна для 3, обычно, когда возникает эта ошибка, люди все еще находятся на 2.3.
2. да, я на rails 3 rails -v => Rails 3.0.4
3. вместо этого используйте «validates_uniqueness_of:identifier» и фильтр before_validation для вашего пользовательского кода.
Ответ №1:
Возможно, вы используете новую версию Rails (3.x.x) (rails -v), но у вас все еще есть старое приложение Rails… Вы должны сгенерировать приложение Rails в другой папке, а затем переместить ваши files .rb, views и так Далее в ваше новое приложение / папку… Я подтверждаю, что «проверка уникальна для 3, обычно, когда возникает эта ошибка, люди все еще находятся на уровне 2.3», как сказал a3uge.
Ответ №2:
Вы можете создать экземпляр конкретного средства проверки и напрямую вызвать метод validate():
def age_validation
ActiveModel::Validations::NumericalityValidator.new(
:greater_than_or_equal_to => 0,
:less_than_or_equal_to => 100,
:attributes => :age
).validate(self)
end