私はカラム名attribute
を使用していくつかのテーブルで既存のdbを持っています。この名前を変更することはできません。アプリケーション全体を再コンパイルするという意味です。ActiveRecord :: DangerousAttributeError - 属性? ActiveRecordによって定義されています
デシベルにアクセスしようと、私はで終わる:
attribute? is defined by ActiveRecord
まずアップ私はDataMapperのを使用してみましたが、私はそれに乗ることができないと自分が壊れてはならない事を固定発見しています - のようなネストされた属性....
だから、私は戻って、ARに来ているとの問題を解決するためにこれを使用しています:
class Radcheck < ActiveRecord::Base
set_table_name 'radcheck'
class << self
def instance_method_already_implemented?(method_name)
return true if method_name == 'attribute?'
return true if method_name == 'attribute_before_type_cast'
return true if method_name == 'attribute='
return true if method_name == 'attribute'
return true if method_name == 'attribute_changed?'
return true if method_name == 'attribute_change'
return true if method_name == 'attribute_will_change!'
return true if method_name == 'attribute_was'
return true if method_name == 'attribute_column'
return true if method_name == 'reset_attribute!'
super
end
end
end
しかし、それは厄介だとするとき、私は実際にTR私の周りをいじりされますyにアクセスしてテーブルにアクセスしてください...
私の他の選択肢は何ですか - この小さなバグの周りに良い方法がありますか?
おそらくこの質問の解決策はあなたを助けることができます:http://stackoverflow.com/questions/5428987/how-can-i-use-activerecord-on-a-database-that-has-a-column-named -attribute-d – JofoCodin
これもあなたを助けることができます:http://stackoverflow.com/questions/4348037/overriding-or-aliasing-name-of-column-in-legacy-database-using-rails-activerecor – sparrovv
I @radcheck = Radcheck.all(:select => 'attrとしての属性')。しかし、私はまだエラーが発生します:( –