Utilisez un lambda, mais au moins dans les versions plus récentes de Rails, ActiveRecord essaiera de passer deux paramètres à ce lambda, et il doit en tenir compte. L'utilisation d'un simple exemple, disons que nous voulons assurer un nom d'utilisateur ne contient que des caractères alphanumériques:
validates_format_of :username, :with => /^[a-z0-9]+$/i,
:message => lambda{|x,y| "must be alphanumeric, but was #{y[:value]}"}
Le premier paramètre passé à la lambda est un pas si petit symbole étrange, ce serait génial pour dire un robot qui a mal tourné:
:"activerecord.errors.models.user.attributes.username.invalid"
(si vous êtes confus par la notation ci-dessus, les symboles peuvent contenir plus que des lettres, des nombres et underscore Mais s'ils le font, vous devez mettre des guillemets autour d'eux parce que sinon. :activerecord.errors
semble que vous essayez d'appeler la méthode .errors
lors d'un appel de symbole ed :activerecord
.)
Le deuxième paramètre contient un hachage avec les champs qui vous aideront à "redresser" votre réponse aux erreurs. Si j'essaie d'ajouter un nom d'utilisateur avec ponctuation comme "Superstar !!!", cela ressemblera à ceci:
{
:model=>"User",
:attribute=>"Username",
:value=>"Superstar!!!"
}
Je suppose que 'event' est une autre classe activemodel? –
Juste par exemple. pas dans le vrai projet – murato