我想要一个类返回它自己的名称,用复数形式,例如“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

问题是你在属于的类上调用to_s,它是Database类。您应该在localClass上调用to_s,这就是self本身。因为Database是消息的默认接收者,所以可以简单地离开self

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

10-14 08:51