Возможно ли псевдоним to_s?
Вместо переопределения to_s
в моей модели я хотел бы псевдоним его к существующему методу full_name
,
И то и другое alias
а также alias_method
не похоже на работу, как ожидалось.
С помощью alias
class Person < ActiveRecord::Base
# ... other model code.
alias to_s full_name
def full_name
"#{first_name} #{last_name}"
end
end
# In Terminal
> Person.last.to_s #=> "#<Person:0x007fa5f8a81b50>"
С помощью alias_method
class Person < ActiveRecord::Base
# ... other model code.
alias_method :to_s, :full_name
def full_name
"#{first_name} #{last_name}"
end
end
# In Terminal
> Person.last.to_s #=> "#<Person:0x007fa5f8a81b50>"
1 ответ
Решение
Догадаться...
alias
а также alias_method
нужно прийти после того метода, к которому вы применяете псевдоним.
Таким образом, оба из следующих работают нормально:
С помощью alias
class Person
def full_name
"#{first_name} #{last_name}"
end
alias to_s full_name
end
# In Terminal
> Person.last.to_s #=> "Don Draper"
С помощью alias_method
class Person
def full_name
"#{first_name} #{last_name}"
end
alias_method :to_s, :full_name
end
# In Terminal
> Person.last.to_s #=> "Don Draper"
Надеюсь, это поможет кому-то еще.