Ответ
@ 3limin4t0r очень хорошо имитирует поведение на простом ruby. Но если вы работаете в Rails, вам не нужно изобретать велосипед просто потому, что вы не используете ActiveRecord.
Вы можете использовать ActiveModel :: Callbacks для определения обратных вызовов в любом простом виде старый ruby объект:
class Something
extend ActiveModel::Callbacks
define_model_callbacks :validate, scope: :name
before_validate do
self.x.downcase
end
def validate!
run_callbacks :validate do
# do validations here
end
end
end
В особенности это сдувает носки с любого из ответов, которые вы получите здесь. Он позволяет определять обратные вызовы до, после и вокруг события и обрабатывает несколько обратных вызовов для каждого события.
Если проверки действительно то, что вам действительно нужно, хотя вы можете просто включить ActiveModel::Validations
, который дает вам все проверки, кроме, конечно, validates_uniqueness_of
, который определяется ActiveRecord.
ActiveModel::Model
включает все модули, составляющие API моделей рельсов, и является хорошим выбором, если вы объявляете виртуальную модель.