Я хочу реализовать обратный вызов before_validaton в отдельном классе, чтобы его можно было повторно использовать несколькими модельными классами.
Здесь в обратном вызове я хочу удалить поле, переданное в качестве параметра, но я не уверен, как передать параметр в класс обратного вызова.Также я хочу передать это как ссылку, а не по значению (не уверен, что эта концепция в Ruby Rails).Я перехожу по ссылке http://guides.rubyonrails.org/active_record_validations_callbacks.html#callback-classes
Вот код, который не совсем корректен, пожалуйста, помогите для того же
class StripFieldsCallback
def self.before_validation(field)
field = field.strip
end
end
class User < ActiveRecord::Base
validates_uniqueness_of :name, :case_sensitive => false
validates_length_of :name, :maximum => 50
before__validation StripFieldsCallback(name)
end
Если я определяю метод в модели сам по себе, а не определяяв отдельном коде класса обратного вызова это так (работает нормально)
class User < ActiveRecord::Base
validates_uniqueness_of :name, :case_sensitive => false
validates_length_of :name, :maximum => 50
before__validation :strip_blanks
protected
def strip_blanks
self.name = self.name.strip
end
end
Конечно, не хорошо копировать методы во всех моделях, поэтому я хочу определить метод в классах обратного вызова.