1

重複の可能性:
Rails の列名のエイリアス

MySQL レガシー データベースにアクセスするための ActiveRecord モデルのモジュールを作成しています。私の問題は、データベースに次のような列の命名規則があることです: groupID, metaGroupName, flagName. この命名規則でモデルをうまく機能させる簡単な方法はありますか?

更新:alias_attribute可能であれば 、この方法は避けたいです。これは小さなデータベースではなく、エイリアスを作成する列が多くなります。おそらくオーバーライドできる列名を解釈する ActiveRecord のメソッドはありますか?

4

2 に答える 2

2

あなたは自分自身を繰り返し続けたくありません—それは良いことです. 幸いなことに、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:excludeActiveRecord::Basealias_columns

于 2012-08-02T03:11:53.233 に答える
1

モデルに以下を追加するだけです

alias_attribute :new_column_name, :myLegacyColumnName
于 2012-08-02T01:14:03.290 に答える