【发布时间】:2017-03-22 13:18:09
【问题描述】:
我想定义多个自定义方法来为 UserConcern 中的自定义用户字段设置值,这些字段不存储在数据库中,而是从外部源中获取。我尝试了下面的代码,结果是 ``': undefined local variable or method get_custom_attrs' for UserConcern:Module (NameError)
get_custom_attrs.each do |key|
define_method(key) do
// returning the value for this key
end
end
private
def get_custom_attrs
OuterConcern::FIELDS - User.attribute_names
end
我显然不能在顶层使用这种方法。如果我切换到在关注点中使用常量变量,例如CUSTOM_FIELDS = [:custom1, custom2, ...],它会起作用,但它不是动态的,每次更改、添加或删除字段时我都必须更改它。
【问题讨论】:
-
我根本看不到这里定义了
get_attrs方法,但您可以使用attr_accessor *get_custom_attr为定义的键创建虚拟属性(因为您在帖子中说过要设置值和您的代码建议检索。 -
这是一个错字。修好了,应该是
get_custom_attrs。
标签: ruby-on-rails ruby