ActiveRecordで特定のモデルが持つカラム名などをconsoleから確認したくなった時
結論
- モデルのクラス名を入れて
Enter
irb(main):012:0> Message => Message(id: integer, body: string, created_at: datetime, updated_at: datetime)
余談
- どうして見れるんだっけ。
- 確かこれ
#inspect
の結果が表示されてるんだよな。
irb(main):013:0> Message.inspect => "Message(id: integer, body: string, created_at: datetime, updated_at: datetime)"
ActiveRecord#inspect
ってどこにあるんだっけ。
irb(main):020:0> Message.method(:inspect) => #<Method: Class(ActiveRecord::Core::ClassMethods)#inspect>
ActiveRecord::Core
ってファイルで言うとどれだっけ
irb(main):021:0> Message.method(:inspect).source_location => ["/Users/nagai_shinya/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/activerecord-4.1.9/lib/active_record/core.rb", 122]
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/core.rb#L217-L231
- なるほどー
# Returns a string like 'Post(id:integer, title:string, body:text)' def inspect if self == Base super elsif abstract_class? "#{super}(abstract)" elsif !connected? "#{super} (call '#{super}.connection' to establish a connection)" elsif table_exists? attr_list = attribute_types.map { |name, type| "#{name}: #{type.type}" } * ', ' "#{super}(#{attr_list})" else "#{super}(Table doesn't exist)" end end