Maneira simples de validação separada do modelo de domínio

O modelo de gordura com validação em todos os casos sempre causa problemas no futuro. Portanto, minha solução é ShadowForm. Agora você pode ter seu modelo original sem validação e usar formulários quando precisar de validação específica. Isso funciona com ActiveRecord e ActiveModel também.

Como funciona

Você tem seu registro ativo ou modelo de modelo ativo :
ruby class User include ActiveModel::Model attr_accessor :name, :email, :password end
E por exemplo formulário de registro
ruby class UserRegistrationForm < ShadowForm shadow_of User validation do validates :email, presence: true validates :password, presence: true end end
E agora você UserRegistrationFormgosta de User+Validation

Se você precisar de um formulário para atualização de e-mail, basta criar um novo como este:

class UserEmailUpdateForm < ShadowForm
shadow_of
User
validation
do
validates
:email, presence: true
end
end

Verifique :