A continuación se mencionan los métodos que la clase usuario tiene que la clase de objeto de base no tiene ...
>> 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", ...
Tenga en cuenta que methods
es un método para Clases y para instancias de clase.
He aquí los métodos que mi clase de usuario tiene que no están en la clase 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.
Tenga en cuenta que los métodos creados como resultado de las (muchas) relaciones has_many definidos en la clase de usuario se no en los resultados de la llamada methods
.
Agregado Tenga en cuenta que: has_many no agrega métodos directamente. En cambio, la maquinaria ActiveRecord usa las técnicas Ruby method_missing
y responds_to
para manejar llamadas de método sobre la marcha. Como resultado, los métodos no se enumeran en el resultado del método methods
.
Para aclarar, ¿desea los métodos invocables en '@ current_user'? –
@Dirk, bienvenido a stackoverflow! Recuerde "verificar" la respuesta que mejor responde a su pregunta. También vota cualquier respuesta, a cualquier pregunta, que encuentres útil/útil. –