Ed W wrote:> This may be a rails bug, but I can''t figure out how to do
attribute
> overrides for the attribute created for a belongs_to relationship
>
>
> I have a simple relationship:
> User belongs_to Domain
>
> User has a property email_address which I want to update if Domain is
> ever changed
>
> I tried in User
>
> def domain=(new_domain)
> super
> end
>
> but now the ability to assign new domains is totally broken and no
> longer works (simply nothing happens)...
>
> I suspect that this needs some magic reflection hacking, but can someone
> set me on the right path to figure out how to work around it. Basically
> I want to just intercept the update call and run some custom code to
> update the User model.
Yes, you can''t use super because AR defines the domain= method on
the User class itself.
Instead use:
def domain_with_email_update=(new_domain)
self.email_address = blah(new_domain)
self.domain_without_email_update = new_domain
end
alias_method_chain :domain=, :email_update
Now user.domain = ... will also do an email update, but you can
use user.domain_without_email_update = ... for cases where you
don''t want the email address updated.
--
We develop, watch us RoR, in numbers too big to ignore.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---