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

lza*_*zap 21 ruby activerecord ruby-on-rails-3

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

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

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

谢谢

Mis*_*cha 30

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

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

class Model
  def instance_method
    puts Model.table_name
  end
end
Run Code Online (Sandbox Code Playgroud)


lza*_*zap 19

找到了.

这是一种课堂方法.从Rails 3文档中不那么明显.

self.class.table_name
Run Code Online (Sandbox Code Playgroud)

  • table_name.classify.constantize (4认同)