[Ror-es] Problema con validaciones
Héctor Pérez Arenas
ruby-forum-incoming at andreas-s.net
Fri Sep 7 11:57:49 GMT 2007
He creado una aplicación nueva (que adjunto) sólo con el código de mi
comentario anterior y con el transfer_test.rb de [4].
Aunque en los últimos comentarios no lo he dejado muy claro, realmente
sí que valida pero no añade el error, como comentaba en el segundo
comentario:
>Una cosa más. ¿Son necesarias las siguientes lineas para que aparezca el
>error?
> errors.add(:receiver,"...") if receiver.nil?
> errors.add(:sender,"...") if sender.nil?
>¿o validates_presence_of ya lo hace? Suponía que sería así, pero
>testeando sólo me aparece si lo añado explícitamente con errors.add en
>el método validate [3].
Es decir, assert !t.valid? va bien (no crea la transfer) pero assert
t.errors.invalid?(:sender) no (a no ser que incluya explícitamente el
método validate, según [5]). En cambio, con amount sí que incluye el
error (si creamos la transferencia sin :amount).
¿Alguna idea de qué hago mal? Gracias de nuevo.
[4]
def setup
@user=User.create
@userB=User.create
end
def test_not_create_transfer_if_params_missing
# check_not_create_transfer_if_missing(:amount)
# check_not_create_transfer_if_missing(:receiver)
# check_not_create_transfer_if_missing(:sender)
#Temp:
t=Transfer.create(:amount=>3.4, :sender=>@user, :receiver=>@userB)
assert t.valid?
t=Transfer.create(:amount=>3.4)
assert !t.valid?
assert t.errors.invalid?(:sender)
end
[5]
class Transfer < ActiveRecord::Base
belongs_to :receiver,
:class_name => "User" ,
:foreign_key => "receiver_id"
belongs_to :sender,
:class_name => "User" ,
:foreign_key => "sender_id"
validates_presence_of :receiver_id, :sender_id, :amount
protected
def validate
super
errors.add(:receiver,"...") if receiver.nil?
errors.add(:sender,"...") if sender.nil?
errors.add(:amount, "...") if amount.nil? || amount < 0.01
end
end
Attachments:
http://www.ruby-forum.com/attachment/239/validat.tar.gz
--
Posted via http://www.ruby-forum.com/.
More information about the Ror-es
mailing list