I've got some code I've been using for a while, which is a generic controller
so I don't need endless identical controller methods in my basic controller
classes.
In my generic new, I do this:
def new
@thing = my_model.new
end
and my_model winds up in this:
def self.model_from_controller_name(name)
(@model_name_cache ||= {})[name] ||=
table_name_from_controller_name(name).singularize.camelize.constantize
end
and all of this works reasonably, except that the second time I use my
controller this way, the instance I get back fails to do all sorts of basic
stuff. For example, it fails to call the id method on ActiveRecord::Base —
instead, it gets stuck in a recursive loop in method_missing.
This would appear to be something to do with some non-obvious class reloading
behavior, perhaps because I'm in development mode. If I take the caching out,
the problem disappears.
Should I just give up on the caching here? I'd like to understand why caching a
reference to a model class should fail.
(BTW, this relates to a previous post earlier this evening; I've now tied it
down more, so I thought I'd start a new topic).
--
SD Ruby mailing list
[email protected]
http://groups.google.com/group/sdruby