У меня есть определение класса, в котором я хочу создать псевдоним нескольких методов его атрибутов с сокращенными терминами. например "цена" до "пр" и так далее:
Работает следующая реализация:
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 не должен работать?
class Fruit < ActiveRecord::Base
ABBREVS = {:price=>:pr, :country=>:ct}
ABBREVS.each_pair{|k,v| alias_method(v, k) }
end
Когда я делаю это, я получаю такую ошибку класса:
NameError: undefined method `price' for class `Fruit'
Очевидно, Руби думает, что я пытаюсь создать псевдоним метода класса, а не метода экземпляра. Я просто неправильно использую alias_method?