Shagy Moe wrote: > > I think two queries at the same time would still return the same > version.
Actually I was thinking to simplify, minimizing the time your spending between the query and the return (you may still need the mutex as suggested above under heavy load scenarios) def next_version next_version = nil unless self.parent_id.nil? last = Document.find(:first, :order => 'version desc', :conditions -> ['parent_id = ?', self.id]) if last.nil? next_version = (self.version.nil? ? '1' : self.version + '.1') else next_version = (last.version.nil? ? '1' : last.version.next) end end return next_version end I *think* this is an equivalent translation of your code, one query, and at most 2 tests before the answer is returned. I'm unsure whether the order will works for your case, but try it out if you're interested. -- 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@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---