现在,我有一些带有不同命名列的遗留类,我通过Rails的alias_attribute将其别名为一个新的通用名称,如下所示:
class User < ActiveRecord::Base
alias_attribute :id, :UserId
...
end
class Car < ActiveRecord::Base
alias_attribute :id, :CarId
...
end
对于某些日志记录,我需要访问旧的列名(例如CarId和UserId)。是否有通过别名从alias_attribute访问旧名称的一般方法?重命名旧列并不理想,因为应用程序的许多其他部分仍在使用旧列名称。
答案 0 :(得分:0)
alias_attribute
是一种非常简单的方法。 All it does就是定义别名。
def alias_attribute(new_name, old_name)
# The following reader methods use an explicit `self` receiver in order to
# support aliases that start with an uppercase letter. Otherwise, they would
# be resolved as constants instead.
module_eval <<-STR, __FILE__, __LINE__ + 1
def #{new_name}; self.#{old_name}; end # def subject; self.title; end
def #{new_name}?; self.#{old_name}?; end # def subject?; self.title?; end
def #{new_name}=(v); self.#{old_name} = v; end # def subject=(v); self.title = v; end
STR
end
所以不,没有办法检索原始列名。