# Getting a list of models in a Rails app

**URL:** <https://www.ruby-forum.com/t/getting-a-list-of-models-in-a-rails-app/84666>\
**Category:** Rails\
**Created:** [February 6, 2007, 8:33pm UTC](https://www.ruby-forum.com/t/getting-a-list-of-models-in-a-rails-app/84666 "2007-02-06T20:33:37Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![davidf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@davidf](https://www.ruby-forum.com/u/davidf)\
**Post date:** [February 6, 2007, 8:33pm UTC](https://www.ruby-forum.com/t/getting-a-list-of-models-in-a-rails-app/84666/1 "2007-02-06T20:33:37Z")

</div>

Anyone know an easy way of doing this?

---

<div class="post-metadata">

**Author:** ![davidf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@davidf](https://www.ruby-forum.com/u/davidf)\
**Post date:** [February 6, 2007, 8:43pm UTC](https://www.ruby-forum.com/t/getting-a-list-of-models-in-a-rails-app/84666/2 "2007-02-06T20:43:04Z")

</div>

On 2/6/07, David F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Anyone know an easy way of doing this?

def get\_models  
models = []  
Dir.glob( RAILS\_ROOT + ‘/app/models/\*’ ).each do |f|  
models \<\< File.basename( f ).gsub( /^(.+).rb/, ‘\1’)  
end  
models  
end

–  
Greg D.  
[http://destiney.com/](http://destiney.com/)

---

<div class="post-metadata">

**Author:** ![davidf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@davidf](https://www.ruby-forum.com/u/davidf)\
**Post date:** [February 6, 2007, 8:50pm UTC](https://www.ruby-forum.com/t/getting-a-list-of-models-in-a-rails-app/84666/3 "2007-02-06T20:50:41Z")

</div>

Greg D. wrote:

> On 2/6/07, David F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > Anyone know an easy way of doing this?
> 
> def get\_models  
> models = []  
> Dir.glob( RAILS\_ROOT + ‘/app/models/\*’ ).each do |f|  
> models \<\< File.basename( f ).gsub( /^(.+).rb/, ‘\1’)  
> end  
> models  
> end
> 
> –  
> Greg D.  
> [http://destiney.com/](http://destiney.com/)

Cheers, I was hoping there would be some in-built rails method to do it,  
but this will do for now.

Many thanks,

Dave.

---

<div class="post-metadata">

**Author:** ![davidf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@davidf](https://www.ruby-forum.com/u/davidf)\
**Post date:** [February 6, 2007, 9:03pm UTC](https://www.ruby-forum.com/t/getting-a-list-of-models-in-a-rails-app/84666/4 "2007-02-06T21:03:06Z")

</div>

this solution tracks the event of deriving from ActiveRecord::Base. it  
has  
very limited capabilities but maybe it’s helpful for you

class Class  
@@ar\_classes = []  
alias :old\_inherited :inherited  
def inherited(cls)  
@@ar\_classes \<\< cls if cls \< ActiveRecord::Base  
old\_inherited cls  
end  
def self.ar\_classes  
@@ar\_classes  
end  
end

derived classes can be dumped with \>\> Class.ar\_classes \<\<

2007/2/6, David F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![davidf](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/f07891/32.png) [@davidf](https://www.ruby-forum.com/u/davidf)\
**Post date:** [February 6, 2007, 9:21pm UTC](https://www.ruby-forum.com/t/getting-a-list-of-models-in-a-rails-app/84666/5 "2007-02-06T21:21:08Z")

</div>

On Feb 6, 2:50 pm, David F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> Cheers, I was hoping there would be some in-built rails method to do it,  
> but this will do for now.

You can use:  
ActiveRecord::Base.send :subclasses

Depending on your need, you may want to use the approach of looking  
for the files. Rails does not load models until necessary, so unless  
all the models have been used, looking for subclasses through any  
means will not provide you with all your models.

Dan M.
