是否可以别名to_s?

时间:2014-04-22 16:28:18

标签: ruby-on-rails ruby alias alias-method

我希望将其替换为名为to_s的现有方法,而不是在我的模型中覆盖full_name

aliasalias_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 个答案:

答案 0 :(得分:7)

想出来......

aliasalias_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"

希望这有助于其他人。