Sau đây sẽ liệt kê các phương pháp mà lớp người dùng có các lớp cơ sở Object 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 phiên bản Lớp.
Dưới đây là các phương pháp mà lớp người dùng của tôi có mà không phải là trong lớp ActiveRecord cơ sở:
>> 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 phương pháp tạo ra như là kết quả của (nhiều) mối quan hệ has_many định nghĩa trong lớp người dùng là không phải trong kết quả cuộc gọi methods
.
Đã 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 các kỹ thuật Ruby method_missing
và responds_to
để xử lý các cuộc gọi phương thức khi đang di chuyển. Do đó, các phương thức không được liệt kê trong kết quả phương pháp methods
.
Để làm rõ, bạn muốn các phương thức có thể gọi trên '@ current_user'? –
@Dirk, chào mừng bạn đến với stackoverflow! Hãy nhớ "kiểm tra" câu trả lời phù hợp nhất với câu hỏi của bạn. Cũng upvote bất kỳ câu trả lời, cho bất kỳ câu hỏi, mà bạn tìm thấy hữu ích/hữu ích. –