Di seguito elencherà i metodi che la classe User ha che la classe Object di base non ha ...
>> 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", ...
Notare che methods
è un metodo per le classi e per le istanze di classi.
Ecco i metodi della mia classe User che non sono nella classe 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.
Notare che i metodi creati come risultato delle (molte) relazioni has_many definite nella classe User non sono nei risultati della methods
chiamata.
Nota aggiunta che: has_many non aggiunge metodi direttamente. Invece, il meccanismo ActiveRecord utilizza Ruby method_missing
e le responds_to
tecniche per gestire le chiamate ai metodi al volo. Di conseguenza, i metodi non sono elencati nel methods
risultato del metodo.
@current_user
?