Ce qui suit va lister les méthodes de la classe User que la classe Object de base n'a pas ...
>> User.methods - Object.methods
=> ["field_types", "maximum", "create!", "active_connections", "to_dropdown",
"content_columns", "su_pw?", "default_timezone", "encode_quoted_value",
"reloadable?", "update", "reset_sequence_name", "default_timezone=",
"validate_find_options", "find_on_conditions_without_deprecation",
"validates_size_of", "execute_simple_calculation", "attr_protected",
"reflections", "table_name_prefix", ...
Notez qu'il methodss'agit d'une méthode pour les classes et pour les instances de classe.
Voici les méthodes de ma classe User qui ne sont pas dans la classe de base ActiveRecord:
>> User.methods - ActiveRecord::Base.methods
=> ["field_types", "su_pw?", "set_login_attr", "create_user_and_conf_user",
"original_table_name", "field_type", "authenticate", "set_default_order",
"id_name?", "id_name_column", "original_locking_column", "default_order",
"subclass_associations", ...
# I ran the statements in the console.
Notez que les méthodes créées à la suite des (nombreuses) relations has_many définies dans la classe User ne figurent pas dans les résultats de lamethods appel.
Ajouté Notez que: has_many n'ajoute pas directement de méthodes. Au lieu de cela, la machine ActiveRecord utilise le Ruby method_missinget des responds_totechniques pour gérer les appels de méthode à la volée. Par conséquent, les méthodes ne sont pas répertoriées dans le methodsrésultat de la méthode.
@current_user?