私はいくつかの属性メソッドの省略名をエイリアスにしたいクラス定義を持っています。例えばなど "PR" と "価格"、および:Ruby:クラス定義でインスタンスメソッドを動的に定義しようとしています:なぜdefine_methodの使用はalias_methodではなく動作しますか?
次の実装が機能:
class Fruit < ActiveRecord::Base
ABBREVS = {:price=>:pr, :country=>:ct}
ABBREVS.each_pair{|k,v| define_method(v){ self.send(k) } }
end
はしかし、define_methodは右、あまりにも...重い利きそうですか? alias_methodも同じではありませんか?
NameError: undefined method `price' for class `Fruit'
どうやら、Rubyは私がクラスメソッドではなく、インスタンスメソッドの別名しようとしていると考えて:私はこれを行うと
class Fruit < ActiveRecord::Base
ABBREVS = {:price=>:pr, :country=>:ct}
ABBREVS.each_pair{|k,v| alias_method(v, k) }
end
は、しかし、私はクラスのこの種のエラーを取得します。ここで間違ったalias_methodを使っていますか?
なぜこれをやりたいですか?意図的に読みやすさを減らすには? – Russell