Brand extends Element. Element has two associations, to a creator and an updater. Element exists to hold a selection of logic which is common among many models in my site.>> b = Brand.new=> #<Brand:0x8f3cd40 @attributes={"visible"=>1, "name"=>nil, "updated_at"=>nil, "creator_id"=>nil, "lock_version"=>0, "type"=>"Brand", "version"=>0, "updater_id"=>nil, "description"=>nil, "created_at"=>nil}, @new_record=true>>> b.attributes=> {"visible"=>1, "name"=>nil, "updated_at"=>nil, "creator_id"=>nil, "type"=>"Brand", "lock_version"=>0, "version"=>0, "updater_id"=>nil, "description"=>nil, "created_at"=>nil} creator_id, updater_id nil as you would expect.>> b.creator_id = 1=> 1>> b.attributes=> {"visible"=>1, "name"=>nil, "updated_at"=>nil, "creator_id"=>1, "type"=>"Brand", "lock_version"=>0, "version"=>0, "updater_id"=>nil, "description"=>nil, "created_at"=>nil} I''ve made this attr_accessible and modifying them by hand works. As shown here.>> b.updater = Editor.find_by_id 1=> #<Editor:0x8eab4bc @attributes={"name"=>"Administrator", "visible"=>"1", "updated_at"=>"2006-11-03 15:05:57", "level"=>"Editor", "lock_version"=>"3", "id"=>"1", "version"=>"0", "password"=>"207f881aa4c15f3149ad0be8c25f16dd59a0a44f", "email"=>"root@localhost", "created_at"=>"2006-11-03 12:54:31"}> Try using an assignment of an Editor instance now. I''d expect updater_id to be set to the id of the editor (1).>> b.attributes=> {"visible"=>1, "name"=>nil, "updated_at"=>nil, "creator_id"=>1, "type"=>"Brand", "lock_version"=>0, "version"=>0, "updater_id"=>nil, "description"=>nil, "created_at"=>nil} But, it isn''t. If I try and save the brand, I get an exception. Is this right? I tried working around this by: 1. Adding ''def creator_id'' which returns self.creator.id. This works but it seems that calling save reads from the attributes rather than calling this method, which isn''t so suprising I guess. 2. Overriding creator=(obj) and updater=(obj) to set the attribute. Except they never get called. Presumeably rails is overriding them after me, or something. Where am I going wrong? I''m quite happy to post the models, but they are very ordinary I don''t think that is the problem. Thanks, Dominic -- Posted via http://www.ruby-forum.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 -~----------~----~----~----~------~----~------~--~---
Dominic Marks wrote:> But, it isn''t. If I try and save the brand, I get an exception. > > Is this right? I tried working around this by: > > 1. Adding ''def creator_id'' which returns self.creator.id. This works but > it seems that calling save reads from the attributes rather than calling > this method, which isn''t so suprising I guess. > > 2. Overriding creator=(obj) and updater=(obj) to set the attribute. > Except they never get called. Presumeably rails is overriding them after > me, or something. > > Where am I going wrong? I''m quite happy to post the models, but they are > very ordinary I don''t think that is the problem. > > Thanks, > DominicIf the parent class has no table for itself, and is solely meant to be inherited make sure you have class Element self.abstract_class = true end or else all kinds of bizarre stuff can happen. -- Posted via http://www.ruby-forum.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 -~----------~----~----~----~------~----~------~--~---
Alex Wayne wrote:> Dominic Marks wrote: >> But, it isn''t. If I try and save the brand, I get an exception. >> >> Is this right? I tried working around this by: >> >> 1. Adding ''def creator_id'' which returns self.creator.id. This works but >> it seems that calling save reads from the attributes rather than calling >> this method, which isn''t so suprising I guess. >> >> 2. Overriding creator=(obj) and updater=(obj) to set the attribute. >> Except they never get called. Presumeably rails is overriding them after >> me, or something. >> >> Where am I going wrong? I''m quite happy to post the models, but they are >> very ordinary I don''t think that is the problem. >> >> Thanks, >> Dominic > > If the parent class has no table for itself, and is solely meant to be > inherited make sure you have > > class Element > self.abstract_class = true > end > > or else all kinds of bizarre stuff can happen.Thanks Wayne. I''ve tried that but it hasn''t changed anything. Useful tip though, I hadn''t heard of that setting before. Dominic -- Posted via http://www.ruby-forum.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 -~----------~----~----~----~------~----~------~--~---