ruby - 在 Singleton 方法中获取类的名称

标签 ruby singleton

我希望一个类返回它自己的复数名称,例如使用“active_support/inflector”:

describe "self.resource" do
  it "should be databases" do
    Database.resource.should equal "databases"
  end
end

class Database
  def self.resource
    self.class.to_s.tableize
  end
end

此操作失败:

   expected #<String:84017460> => "databases"
        got #<String:84018030> => "classes"

如何访问正在调用单例方法的类的名称?

最佳答案

这应该有效:

class Database
  def self.resource
    to_s.tableize
  end
end

问题是您在 Database 所属的类上调用 to_s,它是 Class 类。您应该改为在本地 self 上调用 to_s,即 Database 本身。由于 self 是消息的默认接收者,因此可以简单地保留 to_s.tableize

关于ruby - 在 Singleton 方法中获取类的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20516834/

相关文章:

ruby - Sinatra 中的多个文件上传

ruby - 从 Ruby 中的数组末尾删除 nil 项

java - 在 fragment 生命周期中跟踪对象实例

objective-c - Objective-C 和 swift

ios - 我在创建一个单例吗?

java - 单例模式 "Access to Constructor not Allowed"

ruby Array.inspect 与 Array[element].to_s

ruby - sqlite3-ruby 在 Ubuntu 上安装错误

ruby-on-rails - 我如何将数据从 javascript 的 canvas.toDataURL 保存到 ruby​​ 中的图像文件?

javascript - 如何解决 node.js 中的模块缓存警告(单例问题)?