我想定義多個自定義方法來爲UserConcern中的自定義用戶字段設置值,這些字段不存儲在數據庫中,而是從外部源獲取。我想下面的代碼,這會導致``':未定義的局部變量或方法get_custom_attrs' for UserConcern:Module (NameError)
定義與自定義名稱有關的多個setter方法
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'這將創建虛擬屬性對於定義的鍵(因爲你在帖子中說你想設置的值,你的代碼建議檢索。 – engineersmnky
這是一個錯字。修正了它,它應該是'get_custom_attrs'。 – abpetkov