Как определить имя таблицы в классе модели Rails 3 - PullRequest
20 голосов
/ 26 мая 2011

Я хочу получить имя таблицы в методе модели. Я нашел должен быть метод 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 ]

28 голосов
/ 26 мая 2011

Но мне нужна эта информация в методе экземпляра модели.Как это получить?

Вы можете просто сделать это в вашем методе экземпляра:

class Model
  def instance_method
    puts Model.table_name
  end
end
19 голосов
/ 26 мая 2011

Нашел его.

Это метод класса.Это не так очевидно из документации Rails 3.

self.class.table_name
0 голосов
/ 10 июня 2014

Если вы находитесь в методе класса класса, для которого вы хотите имя таблицы, попробуйте:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...