Command-Line Utility to Interrogate Models

Tammer Saleh

If you run the show_model script with no arguments, it prints a little tree showing the object hierarchy:

ActionMailer::Base
    Notifier
ActiveRecord::Base
    Tag
    Posting
        Comment
        Entry
    Preferences
    User
    Group

Note that, in this example, comments and entries are subclasses of Posting (using single table inheritance).

More useful, though, is getting a quick reference on what class methods, instance methods, associations, and table columns a model has:

User < ActiveRecord::Base
  Class Methods:
    login
  Instance Methods:
    has_access_to?
    password_confirmation
    password_confirmation=
    posts_about
    tags
  Associations:
    has_many   Comments
    has_many   Entries
    has_many   Groups
    has_many   Postings
    has_many   Postings as non_comment_postings
    has_one    Preferences as preferences
  DB Columns:
    active     (boolean)
    admin      (boolean)
    birth_date (date)
    created_on (datetime)
    email      (string)
    first_name (string)
    id         (integer)
    last_login (datetime)
    last_name  (string)
    password   (string)
    prev_login (datetime)
    updated_on (datetime)

Anyways, I thought I’d post this in case it helps anyone else. Should also say that it currently assumes that you’re in the base RAILS_DIR directory.

Next up is a rails2dot that doesn’t suck.

About thoughtbot

We've been helping engineering teams deliver exceptional products for over 20 years. Our designers, developers, and product managers work closely with teams to solve your toughest software challenges through collaborative design and development. Learn more about us.