[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