我想要一个类返回自己的名字,复数,使用例如“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"
如何在调用单例方法时访问类的名称?
答案 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
应按预期工作。