ruby on rails-是否可以别名为to_s



与其在模型中重写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>"

想好了。。。

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"

希望这能帮助其他人

相关内容

  • 没有找到相关文章

最新更新