Лучший подход - заключить псевдомодель в класс и добавить туда проверки. Путь Rails гласит, что вы не должны помещать поведение модели в контроллеры, единственными валидациями должны быть те, которые соответствуют самому запросу (аутентификация, авторизация и т. Д.)
В Rails 2.3+ вы можете включить ActiveRecord::Validations
, с небольшим недостатком, который вы должны определить, какие методы ожидает слой ActiveRecord. См. этот пост для более глубокого объяснения. Код ниже адаптирован из этого поста:
require 'active_record/validations'
class Email
attr_accessor :name, :email
attr_accessor :errors
def initialize(*args)
# Create an Errors object, which is required by validations and to use some view methods.
@errors = ActiveRecord::Errors.new(self)
end
# Required method stubs
def save
end
def save!
end
def new_record?
false
end
def update_attribute
end
# Mix in that validation goodness!
include ActiveRecord::Validations
# Validations! =)
validates_presence_of :name
validates_format_of :email, :with => SOME_EMAIL_REGEXP
end
В Rails3 в вашем распоряжении эти сексуальные проверки :)