Bir lambda kullanın, ancak en azından Rails'in daha yeni sürümlerinde, ActiveRecord bu lambdaya iki parametreyi iletmeye çalışacaktır ve bunların hesaba katılması gerekir. Daha basit bir örneği kullanarak, bir kullanıcı adı sağlamak istiyoruz diyelim sadece alfanümerik karakterler içeriyor:
validates_format_of :username, :with => /^[a-z0-9]+$/i,
:message => lambda{|x,y| "must be alphanumeric, but was #{y[:value]}"}
lambda geçirilen ilk parametre bir robot anlatmak için çok iyi olurdu garip değil bu yüzden küçük sembolün ne yanlış giden: yukarıdaki gösterimde tam olarak anlayamadık
:"activerecord.errors.models.user.attributes.username.invalid"
(durumda, semboller sadece harfler, sayılar daha içerirler ve alt Ama yaparsanız, çevrelerindeki çünkü aksi takdirde tırnak koymak olabilir. :activerecord.errors
, bir sembol çağrısında .errors
yöntemini çağırmaya çalışıyor gibi görünüyor ed :activerecord
.)
İkinci parametre Hata yanıtı "bayağı" size yardımcı olacaktır alanları ile bir karma içeriyor. Başka activemodel sınıftır 'olayı'
{
:model=>"User",
:attribute=>"Username",
:value=>"Superstar!!!"
}
Ben varsayalım: Ben "Süperstar !!!" gibi noktalama bir kullanıcı adı eklemeye çalışırsanız, bu gibi bir şey olacaktır? Örneğin, –
. gerçek projede değil – murato