I have a Doctor - Secretary relation with class Doctor < Person has_many :secretaries ... end and class Secretary < Person belongs_to :doctor, :foreign_key => ''doctor_id'' .... end When saving a Secretary object after assigning a doctor to it, I get a stacktrace like undefined method `updated?'' for #<Doctor:0xb785bdc0> /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/base.rb:1792:in `method_missing'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/callbacks.rb:342:in `callback'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/callbacks.rb:335:in `callback'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/callbacks.rb:330:in `callback'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/callbacks.rb:248:in `create_or_update'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/base.rb:1392:in `save_without_validation'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/validations.rb:724:in `save_without_transactions'' /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.2/lib/active_record/transactions.rb:126:in `save'' Digging into active_record/association.rb''s belongs_to method, it indicates that there is a before_save method that does a association = instance_variable_get("@#{reflection.name}") if !association.nil? if association.new_record? association.save(true) end if association.updated? ........ end end It is the "updated?" method here that its failing. If I put in a dummy updated method in the Doctor class, something like def updated? true end then all is well, and my association is saved correctly. Reading through the manuals, it indicates that saving from the Doctor side(which has the has_many) will automatically persist the Secretaries, but in this case, I want my Secretary to be saved along with the Doctor associated. Is this a bug? The updated? method has been defined in the belongs_to_association.rb and belongs_to_polymorphic_association.rb, but i think it needs to be defined in the has_many_association.rb as well. Im a rails newbie so if all of the above is wrong, please correct me. Thanks Raja -- 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 -~----------~----~----~----~------~----~------~--~---
Raja Venkataraman
2006-Oct-14 07:43 UTC
Re: undefined method `updated?'' when saving object
FWIW I found 2 other posts with a similar problem but no answers http://www.forbiddenweb.org/viewtopic.php?id=85572 and http://article.gmane.org/gmane.comp.lang.ruby.rails/37392 -- 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 -~----------~----~----~----~------~----~------~--~---
Can you post or check your validation methods in both Secretary and Doctor? Quoting http://lists.rubyonrails.org/pipermail/rails/2006-March/026246.html: "my problem was caused by a badly chosen name of a variable in the validates method of my interface model." Looks like this might be the cause... --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Raja Venkataraman
2006-Oct-14 15:40 UTC
Re: undefined method `updated?'' when saving object
Eden Li wrote:> Can you post or check your validation methods in both Secretary and > Doctor? > > Quoting > http://lists.rubyonrails.org/pipermail/rails/2006-March/026246.html: > "my problem was caused by a badly chosen name of a variable in the > validates method of my interface model."Thanks so much. That was just the reason. I created a local variable in the Secretary class called doctor and did a doctor.secretaries << self That seems to be the problem. Renaming that local variable to something like doctor_for_secretary seems to have fixed it. Looking back at the reason, it would never get into the block that I mentioned in my original post if the :belongs_to object is null and if i have a different variable name, that would be the case and the association is only saved due to the link from the Doctor''s side. -- 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 -~----------~----~----~----~------~----~------~--~---