Как мне перечислить все методы, к которым имеет доступ конкретный объект?
У меня есть @current_user
объект, определенный в контроллере приложения:
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
И хочу увидеть, какие методы мне доступны в файле представления. В частности, я хочу посмотреть, какие методы предоставляет :has_many
ассоциация. (Я знаю, что :has_many
нужно предоставить, но хочу это проверить.)
ruby-on-rails
ruby
кортик
источник
источник
@current_user
?Ответы:
Ниже будут перечислены методы, которые есть у класса User, которых нет в базовом классе Object ...
Обратите внимание, что
methods
это метод для классов и для экземпляров класса.Вот методы моего класса User, которых нет в базовом классе ActiveRecord:
Обратите внимание, что методы, созданные в результате (многих) отношений has_many, определенных в классе User, не входят в результаты
methods
вызова.Добавлено Примечание: has_many не добавляет методы напрямую. Вместо этого механизм ActiveRecord использует Ruby
method_missing
иresponds_to
методы для обработки вызовов методов на лету. В результате методы не отображаются вmethods
результатах метода.источник
Модуль # instance_methods
источник
Или просто
User.methods(false)
вернуть только методы, определенные в этом классе.источник
Ты можешь сделать
Для лучшего листинга
источник
Что насчет одного из них?
источник
Предположим, у пользователя есть_many сообщений:
источник
Изложить ответ @clyfe. Вы можете получить список ваших методов экземпляра, используя следующий код (при условии, что у вас есть объектный класс с именем «Parser»):
источник
Если вы ищете список методов, которые отвечают экземпляром (в вашем случае @current_user). Согласно методам документации ruby
Кроме того, вы также можете проверить, вызывается ли метод для объекта или нет ?.
Если вам не нужны методы родительского класса, просто вычтите из него методы родительского класса.
источник