Я не уверен, что вы имеете в виду, говоря о "загрязнении" вашей пользовательской модели, но вы можете сделать это, используя метод attr_accessor .Это позволит вам создать атрибут для модели, который можно использовать для проверок:
class Widget < ActiveRecord::Base
attr_accessor :confirmation_email
validates_length_of :confirmation_email, :within => 1..10
end
Чтобы запускать проверку только в определенное время, вы можете использовать условие :if
:
validates_length_of :confirmation_email, :within => 1..10, :if => Proc.new { |widget| widget.creation_step > 2 }
Вы также можете использовать метод класса, например: :if => :payment_complete
.С их помощью вы сможете достичь желаемой функциональности.Насколько я знаю, нет более краткого пути.