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

时间:2014-09-29 05:00:58

标签: ruby-on-rails activerecord metaprogramming alias

在类定义中,除了用于存储这些值的容器为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中存储属性的一些临时值:它们应该出现而不是db值,并希望影响对象的关联。

上述代码不起作用,所有attr1访问结果均为零。 谢谢!

0 个答案:

没有答案