下面将列出用户类有基类对象没有方法...
>> 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", ...
请注意,methods
是Classes和Class实例的一种方法。
下面是我的User类有方法,这些方法不是在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.
注意,如用户类中定义的(多)的has_many关系的结果而创建的方法是methods
调用的结果中不是。
添加请注意:has_many不直接添加方法。相反,ActiveRecord机制使用Ruby method_missing
和responds_to
技术来即时处理方法调用。因此,这些方法未在methods
方法结果中列出。
为了澄清,您希望可以在'@ current_user'上调用方法吗? – 2011-12-21 19:28:28
@Dirk,欢迎来到stackoverflow!请记住“检查”最能回答您问题的答案。对于任何问题,您也可以提出任何答案,并认为您认为有用/有帮助。 – 2011-12-22 01:04:41