【问题标题】:Ruby: How do I add methods to Object? (or simply Extend the object class)Ruby:如何向对象添加方法? (或者只是扩展对象类)
【发布时间】:2011-08-10 18:03:08
【问题描述】:

我想扩展 Object 来添加一些方法。

所以我可以使用@object.table_name 而不是@object.class.name.tableize

还有类似的东西。

我使用的是 Ruby 1.8.7 和 Rails 2.3.8,所以也许这种东西会作为模块放在 lib 文件夹中?我不知道。

【问题讨论】:

  • Object 不是您要修改的类。

标签: ruby-on-rails ruby monkeypatching


【解决方案1】:
# object.rb
class Object
  def table_name
    self.class.name.tableize
  end
end

将其放入/config/initializerslib 文件夹(在这种情况下,您需要将其包含在ApplicationController 中)。

【讨论】:

  • 另一种选择(只要方法不存在)是将方法放在模块中,并将模块包含在类中。
【解决方案2】:

您有时会看到将实例方法委托给类的一个习惯用法就是:

delegate :table_name, :to => 'self'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 2013-03-13
    • 2016-06-28
    • 2018-04-23
    • 1970-01-01
    • 2013-09-10
    相关资源
    最近更新 更多