如何在Rails 3模型类中确定表名

我想在模型方法中获取表名。 我发现应该有方法table_name但是当我尝试调用它时,我得到NameErrorexception:未定义的局部变量或方法`table_name’。 显然不存在:

pp methods.grep(/^ta.*/) ["table_name_prefix?", "table_name_suffix?", "taint", "taguri", "taguri=", "tainted?", "table_name_prefix", "table_name_suffix", "tap"] 

如何获得一个“真正的”表名(没有lowecase – 复数技巧)?

谢谢

但我需要在模型的实例方法中使用该信息。 怎么弄呢?

您可以在实例方法中执行此操作:

 class Model def instance_method puts Model.table_name end end 

找到了。

这是一种类方法。 从Rails 3文档中不那么明显。

 self.class.table_name 

如果您在类的类方法中想要表名,请尝试:

 class Model < ActiveRecord::Base def self.class_method puts self.table_name end end 

如果你尝试使用

 self.class.table_name 

你将遇到NoMethodError: undefined method 'table_name' for Class:Class