В рубине 1.9 можно было сделать так:
def foo
val = "a string"
def val.big
self.upcase
end
val
end
и можно было бы вызвать foo с возвращенной «строкой» или foo.big и получить возвращенную «СТРОКУ».
Однако в Ruby 2.1 это больше невозможно, выдается ошибка «невозможно определить одноэлементный метод». Как будут реализованы методы в версии 2.1 для foo и foo.big?
(Очевидно, что это упрощенный пример, мне нужно реализовать одноэлементный метод для значения, возвращаемого другим методом).
ОБНОВЛЕНИЕ: похоже, что это ВОЗМОЖНО в ruby 2.1, но НЕ в контексте класса ActiveRecord!
ВТОРОЕ ОБНОВЛЕНИЕ: Когда val является строкой, это работает. Моя проблема возникает, когда кто-то пытается определить одноэлементный класс для такого числа:
def foo
val = 42
def val.smaller
self - 11
end
val
end
это выдает ошибку «TypeError: не удается определить синглтон»
ruby 2.1.7p400
, так и наruby 2.2.3p173
из быстрого тестирования рубинов, которое у меня было здесь. - person Doon   schedule 07.12.2015val
— это экземпляр ActiveRecord? ЕСЛИ так что это именно? (какой класс) - person Doon   schedule 07.12.2015