Rails3-列名(传统数据库)



可能重复:
Rails 中列名的别名

我正在编写一个ActiveRecord模型模块来访问MySQL遗留数据库。我的问题是,数据库有一个列命名约定,如下所示:groupIDmetaGroupNameflagName。有没有一种简单的方法可以让模型很好地使用这种命名约定?

更新:如果可能的话,我想避免使用alias_attribute方法。这不是一个小数据库,需要别名很多列。ActiveRecord中是否有一种方法可以解释我可以重写的列名?

你不想一直重复自己——这很好。幸运的是,Ruby让它变得相当容易。尝试以下操作:

class Model < ActiveRecord::Base
  column_names.each do |cn|
    alias_attribute cn.underscore.intern, cn
  end
end

然后我会把它分解成Module,可能是这样的:

module AliasLegacyColumns
  extend ActiveSupport::Concern
  included do
    column_names.each {|cn|
      alias_attribute cn.underscore.intern, cn
    }
  end
end

然后根据需要将其包含在您的模型中。为了进一步细化,我将提供一个alias_columns类级别的方法,它接受:include:exclude等参数,这样您就可以用所述模块对ActiveRecord::Base进行猴子补丁,但只根据每个模型的需要调用alias_columns

只需将以下内容添加到您的模型中

alias_attribute :new_column_name, :myLegacyColumnName

相关内容

  • 没有找到相关文章

最新更新