以Singleton方法获取类的名称

时间:2013-12-11 10:38:19

标签: ruby singleton

我想要一个类返回自己的名字,复数,使用例如“active_support /偏转器”:

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"

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

2 个答案:

答案 0 :(得分:2)

这应该有效:

class Database
  def self.resource
    to_s.tableize
  end
end

问题是您在类to_s上调用了Database,并且它是Class类。您应该在本地to_s上致电self,而Database本身就是self。由于to_s.tableize是邮件的默认接收者,因此可以简单地离开{{1}}。

答案 1 :(得分:1)

您不应在class上调用self方法。 Singleton类已经属于类,而不是实例。

在你的情况下:

self.to_s.tableize

应按预期工作。