Greg Hauptmann wrote: > Class variables in a model are ok to cache relatively static records > within the scope of a brower call aren't they? That is, the results get > "refreshed" effectively each browser call (i.e. per browser call, per > mongrel process). Example of what I'm talking about is below. > > @@all_records = nil > def self.all_records > @@all_records ||= Automatch.find(:all) # say only 10 records, > relatively static > end
Technically yes, and esthetically no. You are "coupling" the state of your model to its current location in control flow. If control flow changes, your coupling might break. If, for example, you added a new feature that required two model objects, extant at the same time, then their @@all_records might accidentally conflict. Decoupled code is easier to safely change - that's essentially the definition of "decoupled". Take out @@all_records = nil entirely, then use @all_records = Automatch.find(:all). If your controller and similar code is also decoupled, it won't create more instances of your model than it needs, and they will be efficient. --~--~---------~--~----~------------~-------~--~----~ 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 [email protected] 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 -~----------~----~----~----~------~----~------~--~---

