[Ror-es] Problema con validaciones
Héctor Pérez Arenas
ruby-forum-incoming at andreas-s.net
Thu Sep 6 09:25:11 GMT 2007
Damian Janowski wrote:
> Como dice el "Warning" de la documentaci�n [1], para validar la
> presencia de una relaci�n hay que utilizar el nombre de la clave
> for�nea, y no el de la
> asociaci�n:
validates_presence_of :user_id
>
> PD: �Ambas relaciones utilizan la misma FK?
Cierto, gracias. Ahora queda según [2]
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].
[2]
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
#errors.add(:receiver,"...") if receiver.nil?
#errors.add(:sender,"...") if sender.nil?
errors.add(:amount, "should be at least 0.01") if amount.nil? ||
amount < 0.01
end
end
[3]
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)
end
private
def create_transfer(params={})
default={:amount=>3.0,:receiver=>@user,:sender=>@userB}
Transfer.create(default.merge(params))
end
def check_not_create_transfer_if_missing(param)
t=create_transfer(param=>nil)
assert !t.valid?
assert t.errors.invalid?(param)
end
--
Posted via http://www.ruby-forum.com/.
More information about the Ror-es
mailing list