El mejor enfoque sería cerrar su pseudo-modelo en una clase y agregar las validaciones allí. La forma Rails indica que no debe poner el comportamiento del modelo en los controladores, las únicas validaciones deben ser las que acompañan a la solicitud (autenticación, autorización, etc.)
En Rails 2.3+, puede incluir ActiveRecord::Validations
, con el pequeño inconveniente de que debe definir algunos métodos que espera la capa ActiveRecord. Vea this post para una explicación más profunda. Código de abajo adaptado del mensaje:
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
En Rails3, usted tiene los sexy validations a su disposición :)
dulzura !!!!!!! – denniss
Fácil como un pastel. Gracias, en busca de algo como esto. –
Para Rails 3, reemplace ActiveRecord :: Errors with ActiveModel :: Errors –