Jos*_*ter 2 ruby alias ruby-on-rails alias-method
to_s我不想覆盖我的模型,而是将其别名为现有的方法full_name.
双方alias并alias_method似乎并不如预期的工作.
aliasclass 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>"
Run Code Online (Sandbox Code Playgroud)
alias_methodclass 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>"
Run Code Online (Sandbox Code Playgroud)
弄清楚了...
alias并且alias_method需要在你要别名的方法之后来.
所以以下两项工作都很好:
aliasclass Person
def full_name
"#{first_name} #{last_name}"
end
alias to_s full_name
end
# In Terminal
> Person.last.to_s #=> "Don Draper"
Run Code Online (Sandbox Code Playgroud)
alias_methodclass Person
def full_name
"#{first_name} #{last_name}"
end
alias_method :to_s, :full_name
end
# In Terminal
> Person.last.to_s #=> "Don Draper"
Run Code Online (Sandbox Code Playgroud)
希望这有助于其他人.
| 归档时间: |
|
| 查看次数: |
386 次 |
| 最近记录: |