I have nested models: Assessments has_many Questions has_many Answers. I have plans on turning this into an engine where it can be used by other models. There are several fields in both Questions and Answers that, if changed (or created ,deleted) I need to call a "update_procedure" that does some calculations and saves the results in the Assessment. Right now I have an after_save and after_destroy filter that calls the routine if anything is changed, which is not what I want. What approach do I need to handle filters if only certain attributes are change?. The reason is that I may need to change the state/status of the assessment if scores in another model were based on the current version. I don''t need to do the state change if the admin just fixed a misspelling. I looked at Module: ActiveRecord::Dirty, but not sure I understand it. Is that what I need to understand? -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Marnen Laibow-Koser
2010-Aug-16 17:35 UTC
Re: filter help when attribute changes to call procedure
AppleII717 wrote:> I have nested models: > > Assessments has_many Questions has_many Answers. > > I have plans on turning this into an engine where it can be used by > other models. > > There are several fields in both Questions and Answers that, if > changed (or created ,deleted) I need to call a "update_procedure" that > does some calculations and saves the results in the Assessment. > > Right now I have an after_save and after_destroy filter that calls the > routine if anything is changed, which is not what I want. What > approach do I need to handle filters if only certain attributes are > change?. The reason is that I may need to change the state/status of > the assessment if scores in another model were based on the current > version. I don''t need to do the state change if the admin just fixed a > misspelling. > > I looked at Module: ActiveRecord::Dirty, but not sure I understand it. > Is that what I need to understand?A quick look at the rdoc would suggest that Dirty#changed would do what you want. An observer might be useful too. Best, -- Marnen Laibow-Koser http://www.marnen.org marnen-sbuyVjPbboAdnm+yROfE0A@public.gmane.org -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I guess I forgot to mention this is rails3 and the edge rdoc threw me off. In Rails 2.1+ there is ActiveRecord::dirty class, which looked like what I wanted. But in Rails 3 there is no ActiveRecord::dirty class. There is ActiveModel::dirty - and that is what I was referring to that I was not sure I understood. After further digging, ActiveModel::dirty: "Provides a way to track changes in your object in the same way as Active Record does." I am not sure what includes what, but there is ActiveRecord::AttributeMethods::Dirty, but I can''t seem to find the examples that were in the 2.x rdoc (e.g., person.name_changed?). After some experimenting I found that the methods changed, changed? etc are there and work. I just can''t find the documentation. Thank for the help. On Aug 16, 12:35 pm, Marnen Laibow-Koser <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> AppleII717 wrote: > > I have nested models: > > > Assessments has_many Questions has_many Answers. > > > I have plans on turning this into an engine where it can be used by > > other models. > > > There are several fields in both Questions and Answers that, if > > changed (or created ,deleted) I need to call a "update_procedure" that > > does some calculations and saves the results in the Assessment. > > > Right now I have an after_save and after_destroy filter that calls the > > routine if anything is changed, which is not what I want. What > > approach do I need to handle filters if only certain attributes are > > change?. The reason is that I may need to change the state/status of > > the assessment if scores in another model were based on the current > > version. I don''t need to do the state change if the admin just fixed a > > misspelling. > > > I looked at Module: ActiveRecord::Dirty, but not sure I understand it. > > Is that what I need to understand? > > A quick look at the rdoc would suggest that Dirty#changed would do what > you want. An observer might be useful too. > > Best, > -- > Marnen Laibow-Koserhttp://www.marnen.org > mar...-sbuyVjPbboAdnm+yROfE0A@public.gmane.org > -- > Posted viahttp://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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.