i really like the declarative model-based validation in rails, but i run into trouble while doing some real world (more complex) stuff.
class User < ActiveRecord::Base belongs_to :address accepts_nested_attributes_for :address def needs_street_validation? true end end
class Address < ActiveRecord::Base has_one :user validates_presence_of :street, :if => Proc.new { |adr| adr.user.needs_street_validation? } end
u = User.new u.address = Address.new u.save
NoMethodError: You have a nil object when you didn't expect it! The error occurred while evaluating nil.needs_street_validation? from app/models/address.rb:3
seems to me like we cannot reference any associated object within the ":if" condition or do you know some trick to get this working ?
maybe this is not the best example, but i hope you got the point.
in most more-complex gui's we have conditional validation based on the state of multiple objects. It would be a shame if we could only handle those validation programmatically.
tested in a vanilla rails 2.3.2 application.
any help would be really appreciated.
regards jan