Sau đây sẽ liệt kê các phương thức mà lớp Người dùng có mà lớp Đối tượng cơ sở không có ...
>> 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", ...
Lưu ý rằng đó methods
là một phương thức cho Lớp và cho các cá thể Lớp.
Đây là các phương thức mà lớp Người dùng của tôi có không có trong lớp cơ sở 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.
Lưu ý rằng các phương thức được tạo là kết quả của (nhiều) mối quan hệ has_many được định nghĩa trong lớp Người dùng không nằm trong kết quả củamethods
cuộc gọi.
Đã thêm Lưu ý rằng: has_many không thêm phương thức trực tiếp. Thay vào đó, máy ActiveRecord sử dụng Ruby method_missing
và các responds_to
kỹ thuật để xử lý các lệnh gọi phương thức một cách nhanh chóng. Do đó, các phương thức không được liệt kê trong methods
kết quả phương thức.
@current_user
?