Im Folgenden werden die Methoden aufgelistet, über die die Benutzerklasse verfügt, die die Basisobjektklasse nicht hat ...
>> 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", ...
Beachten Sie, dass dies methods
eine Methode für Klassen und für Klasseninstanzen ist.
Hier sind die Methoden meiner Benutzerklasse, die nicht zur ActiveRecord-Basisklasse gehören:
>> 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.
Beachten Sie, dass die Methoden, die als Ergebnis der (vielen) has_many-Beziehungen erstellt wurden, die in der User-Klasse definiert sind, nicht in den Ergebnissen des methods
Aufrufs enthalten sind.
Hinzugefügt Beachten Sie Folgendes: has_many fügt keine Methoden direkt hinzu. Stattdessen verwendet die ActiveRecord-Maschinerie Ruby method_missing
und responds_to
Techniken, um Methodenaufrufe im laufenden Betrieb zu verarbeiten. Infolgedessen werden die Methoden nicht im Methodenergebnis aufgeführt methods
.
@current_user
?