The functionality with callbacks and STI does not seem to be working as
expected. Here is a scenario and what I''ve done. Suggestion welcome.
assume you have parent.rb
class Parent < ActiveRecord::Base
validates_uniqueness_of :some_field, :scope => :field_1
before_validation :update_name
def update_name
self.name = "I''m a parent"
end
end
class Child < Parent
validates_uniqueness_of :some_field, :scope => [ :field_1, :field_2 ]
def update_name
self.name = "I''m a child"
end
end
now, one would expect that like the rest of inheritance that the child
validates_uniqueness_of would as it does with callback methods. This does
not work, however. You do correctly get parents named "I''m a
parent" and
children named "I''m a child" but children will still be
validated according
to the parent validation rules.
if you try this in parent:
validates_uniqueness_of :some_field, :scope => :field_1, :unless =>
self.is_a?(Child)
this is even worse b/c now the callbacks are not called in this case if you
are a child. All the callbacks - not just for the validation in question.
I guess what I would expect is that whatever is in the child objects in the
inheritance structure would take priority. This works with callbacks. Even
further I might want to define a validation at the parent that I don''t
need
at the child. The only solution in this case is to validate only at the
child classes where you need that validation and leave the parent as open as
possible.
Any ideas before I just throw this all in a callback method and do it the
old way?
Thanks,
Jeff
--
Jeff Webb
jeff-OBTZZsKxNvRBDgjK7y7TUQ@public.gmane.org
http://boowebb.com/
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---