how does table_name static method work ?

There has to be a simple explanation for this.

I can do this to get the table name behind a model

User.table_name

=> "users"

Great. But looking at the table_name code in active_record/base.rb, the table_name method is not static (no self.)!

      def table_name         reset_table_name       end

So why can I call table_name as a static method ???

There has to be a simple explanation for this.

I can do this to get the table name behind a model

User.table_name

=> "users"

Great. But looking at the table_name code in active_record/base.rb, the table_name method is not static (no self.)!

     def table_name        reset_table_name      end

So why can I call table_name as a static method ???

Scroll up to around line 353 and you'll see this line:

     class << self # Class methods

So if you remove everything else you really have this:

module ActiveRecord    class Base      class << self # Class methods        def table_name          ....        end      end    end end