Here are the pertinent bits of the model classes I''m having an issue
with...
# BEGIN CODE
class User < ActiveRecord::Base
has_many :contacts, :order => :position
# This allows me to collect up the individual errors for each
subclass of
# Contact I use (EmailAddress, PhysicalAddress, PhoneNumber)
def after_validation
contacts.each { |c| c.errors.each { |attr, msg|
errors.add(Inflector.underscore(c.class), msg) } }
end
# One of the virtual attributes for reference
def email_address
address = contacts.detect { |c| c.is_a?(EmailAddress) }
address ? address.content : nil
end
# - and its setter method
def email_address=(content, description = nil)
address = contacts.find(:first, :conditions => ["type =
''EmailAddress'' AND content = ?", content])
address.move_to_top and return if address
address = EmailAddress.new(:description => description, :content
=> content)
contacts << address
address.save and address.move_to_top unless @new_record
end
end
class Contact < ActiveRecord::Base
acts_as_list :scope => :user_id
belongs_to :user
end
# One of the Contact subclasses for reference
class EmailAddress < Contact
validates_format_of :content, :with =>
/^[a-z0-9\-_\.]+@[a-z0-9\-\.]+$/
end
# END CODE
Ever since switching from the 0.13.x stream to the 0.14.x stream I am
now getting extra errors when (for example) an e-mail address doesn''t
validate. The quickest way to describe this change is that it is now as
though an implicit ''validate_association :contact'' has been
added to my
User class just because an EmailAddress is a subclass of Contact of
which User has many. What has been changed and how can I override it so
that my error messages aren''t full of ''Contacts is
invalid'' rubbish?
--
Posted via http://www.ruby-forum.com/.