While working on a big project (>100 models) it was necessary to use
namespace to store the models and surprisingly it wasn't hard at all.
Looks like Rails is (almost) supporting full model namespaces out-of-
the-box. :)

The one and only problem was with STI. If you have subclasses in a
different namespace than the baseclass then things will blow. Reason
being ActiveRecord doesn't store the full class name, it store the
"demodulized" version of it.

For example:

class CollectionItem < ActiveRecord::Base; end
class ComicCollection::Item < CollectionItem; end

item = ComicCollection::Item.new
item.type # => 'Item'

item2 = CollectionItem.find(item.id) # <- this would raise an error
because it would not find class Item

I wrote a patch that add a configuration option
ActiveRecord::Base.store_full_sti_class (in order to keep back-
compatibility) that when enabled will store the full class name.

I believe storing the demodulized name was a bad assumption made in
the early days of Rails. Applying this patch will not only allow
people to namespace their models but probably prevent some other
errors and bugs in the future.

If you think this should be applied, please go ahead and add +1 in
there.

Cheers
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" 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-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to