Der beste Ansatz wäre, Ihr Pseudomodell in eine Klasse einzubinden und die Validierungen dort hinzuzufügen. Der Rails-Weg besagt, dass Sie kein Modellverhalten auf die Controller setzen sollten, die einzigen Validierungen sollten diejenigen sein, die zur Anfrage gehören (Authentifizierung, Autorisierung usw.)
In Rails 2.3+ können Sie ActiveRecord::Validations
einschließen , mit dem kleinen Nachteil, dass Sie einige Methoden definieren müssen, die die ActiveRecord-Schicht erwartet. Eine genauere Erklärung finden Sie unter this post. Code unten von dieser Stelle angepasst:
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
In Rails3, Sie diejenigen sexy validations zur Verfügung zu haben :)
Süße !!!!!!! – denniss
Einfach wie Kuchen. Danke, wo du nach so etwas suchst. –
Ersetzen Sie für Rails 3 ActiveRecord :: Errors mit ActiveModel :: Errors –