メソッド定義位置を調べたい
objct.method(:method_symbol_name).source_location
#=> ["/path/to/the/file.rb",34]
オブジェクトのメソッドを調べたい
pry
ls -m object
こんなメソッドないかな?
Rails初心者だった頃は、クラスの定義だけでなく、継承やインクルード、method_missingで自動生成されたメソッドなどを使いたいときに、オブジェクトのメソッド一覧のうち、「これっぽい名前のメソッドないかな?」という感じで調べたいときは、これを使っていました。
object.public_methods.select{|m| m.to_s.include?('user') }
#=>
[:autosave_associated_records_for_user,
:build_user,
:create_user!,
:reload_user,
:create_user,
:user,
:user=,
:id_came_from_user?,
:user_id=,
:user_id_before_type_cast,
:user_id_came_from_user?,
:user_id?,
:user_id_changed?,
:user_id_change,
:user_id_will_change!,
:user_id_was,
:user_id_previously_changed?,
:user_id_previous_change,
:restore_user_id!,
:saved_change_to_user_id?,
:saved_change_to_user_id,
:user_id_before_last_save,
:will_save_change_to_user_id?,
:user_id_change_to_be_saved,
:user_id_in_database,
:role_came_from_user?,
:created_at_came_from_user?,
:user_id,
:updated_at_came_from_user?]