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

时间:2011-05-26 13:53:05

标签: ruby ruby-on-rails-3 activerecord

我想在模型方法中获取表名。我found应该有方法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"]

如何获得“真正的”表名(没有低级 - 复数技巧)?

由于

3 个答案:

答案 0 :(得分:28)

  

但我需要那些信息   模型的实例方法。如何获得   它?

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

class Model
  def instance_method
    puts Model.table_name
  end
end

答案 1 :(得分:19)

找到它。

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

self.class.table_name

答案 2 :(得分:0)

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

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