Есть ли способ включить модуль в класс, чтобы модуль
методы переопределяют методы класса? Например:
module UpcasedName
def name
@name.upcase
end
end
class User
attr_accessor :name
include UpcasedName
end
u = User.new
u.name = 'john'
puts u.name # outputs 'john', not 'JOHN'
В приведенном выше примере u.name - это 'john', а не 'JOHN'. Я знаю, что если я
расширить пользовательский объект вместо включения модуля в класс, это
будет работать
module UpcasedName
def name
@name.upcase
end
end
class User
attr_accessor :name
end
u = User.new
u.name = 'john'
u.extend UpcasedName
puts u.name # outputs 'JOHN'
Однако я хочу включить модуль на уровне класса, а не на уровне объекта.