>
> I think this question might be better for Rails-talk or Stack Overflow, as
> Rails-core is designated for discussion of the core itself.
>

Uh, sorry!

So you say I could do for example something like:

# app/models/activity.rb
class Activity < ApplicationRecord
end

# app/models/activity/activity_1.rb
class Activity
  class Activity1 < Activity
  end
end

And get rid from

ArgumentError: A copy of SubFolderModel has been removed from the
module tree but is still active!

errors? It would be suitable for me!


--

Maurizio De Santis

2017-02-24 18:01 GMT+01:00 Jason Fleetwood-Boldt <[email protected]>:

> I think this question might be better for Rails-talk or Stack Overflow, as
> Rails-core is designated for discussion of the core itself.
>
> However, I will answer it anyway....
>
> Unless I'm mistaken, OP is wanting to segregate his models into subfolders.
>
> "The Rails way" philosophy on this, which I will voice objection too as
> someone who works primarily on very large apps, is typical to optimize for
> small apps and easy-of-entry into the ecosystem but not particularly
> optimized for larger apps.
>
> On a larger apps, you could have hundreds and hundreds of models.
> Separating into subfolders is perfectly appropriate.
>
> OP -- I think perhaps all you need is to namespace your models
> themselves.  For example, we have a folder in app/models called platform (a
> generic name, I know)
>
> All of the models inside of app/models/platform are namespaced using
>
> Platform::
>
> so we have a model called Platform::Block (the file name is
> app/models/platform/platform/block.rb)
>
> You can define this using
>
> class Platform::Block < ActiveRecord::Base
>
> # your class code here
> end
>
>
> alternatively, another Ruby syntax for the same thing is
>
> module Platform
>   class Block  < ActiveRecord::Base
>         # your class code here
>   end
> end
>
>
> I believe the only way to put models into subfolder is to rename them
> using namespaces. Renaming is a good idea, but of course affects things
> like all the relationships and STI ('type' column in a polymorphic
> implementation), which all have to be renamed. (So it's not quite as simply
> as dragging them into a folder)
>
> A foreign key to this model also usually then needs a class_name on it,
> except I think in cases where the foreign key is coming from another model
> that is also in the same namespace.
>
> -Jason
>
>
>
>
>
> > On Feb 24, 2017, at 11:48 AM, Allen Madsen <[email protected]>
> wrote:
> >
> > I believe everything under app/models is loaded by default, so you
> shouldn't need to add a subdirectory.
> >
> > Allen Madsen
> > http://www.allenmadsen.com
> >
> > On Fri, Feb 24, 2017 at 10:49 AM, Maurizio De Santis <
> [email protected]> wrote:
> > [From the issue I opened about it: https://github.com/rails/
> rails/issues/28152]
> >
> > I don't know if this is more a bug report or a feature request, or even
> an SO question  anyway:
> >
> >
> > I have a model Activity which has a lot of sti types, so a lot of
> related class files. I would like to organize them into
> app/models/activities, in order to separate them from the other models. I
> can actually accomplish it using config.eager_load_paths +=
> %W(#{config.root}/app/models/activities) directive, but then in
> development mode the following exception is raised:
> >
> >
> > ArgumentError: A copy of SubFolderModel has been removed from the module
> tree but is still active!
> >
> > I guess the reason is that app/models/subfolder conflicts with
> app/models autoload. Anyway, is there a way to organize models using
> different directories?
> >
> >
> > Steps to reproduce
> >
> >       • Create an app/models subfolder
> >       • Put some models inside
> >       • Add config.eager_load_paths += 
> > %W(#{config.root}/app/models/subfolder)
> to config/application.rb
> >       • Start the application in development mode
> > Expected behavior
> >
> >
> > Everything works fine
> >
> >
> > Actual behavior
> >
> >
> > Sometimes the following exception is raised:
> >
> >
> > ArgumentError: A copy of SubFolderModel has been removed from the module
> tree but is still active!
> >
> > System configuration
> >
> >
> > Rails version: 5.0.1
> >
> > Ruby version: 2.4.0
> >
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups "Ruby on Rails: Core" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected].
> > To post to this group, send email to [email protected].
> > Visit this group at https://groups.google.com/group/rubyonrails-core.
> > For more options, visit https://groups.google.com/d/optout.
> >
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups "Ruby on Rails: Core" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected].
> > To post to this group, send email to [email protected].
> > Visit this group at https://groups.google.com/group/rubyonrails-core.
> > For more options, visit https://groups.google.com/d/optout.
>
> ----
>
> Jason Fleetwood-Boldt
> [email protected]
> http://www.jasonfleetwoodboldt.com/writing
>
> If you'd like to reply by encrypted email you can find my public key on
> jasonfleetwoodboldt.com (more about setting GPG: https://gpgtools.org)
>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Ruby on Rails: Core" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/rubyonrails-core/krboJIieoXk/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/rubyonrails-core.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to