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 methods
s'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_missing
et des responds_to
techniques 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 methods
résultat de la méthode.
@current_user
?