如何在rails中创建动态属性别名?

在类定义中,我得到了一个我想要返回的属性列表而不是数据库的值,除非这些值的存储容器是nil:

class Label < ActiveRecord::Base CONFIRM_DATA = ["attr1", "attr2"] # "attr1", "attr2" is database fields CONFIRM_DATA.each do |att| alias_attribute "original_#{att}".to_sym, att.to_sym define_method att.to_sym do temp_attr_store[ att.to_sym ] || read_attribute( "original_#{att}".to_sym) end end end 

如您所见,我尝试在temp_attr_store存储temp_attr_store一些临时值:它们应该出现而不是db值,并希望影响对象的关联。

上面的代码不起作用,所有attr1访问结果都是零。 谢谢!