2014-10-29 3 views

ответ

15

Короткий ответ:
Вы не делаете ничего плохого. Прямо сейчас, это лучший Рубимин.

Чуть больше ответить:
Как вы, наверное, знаете, Ruby может быть очень динамичным языком. Усовершенствование в значительной степени зависит от возможностей метапрограммирования языка. Помощники, такие как current_user, генерируются во время выполнения, предоставляя возможности статического анализа Rubyine неэффективными.

У Rubymine должна быть специальная поддержка Devise, и, насколько я знаю, это просто не так.

+0

Может быть, есть возможность предоставить некоторые фиктивные методы где-то, чтобы получить тип намекая и завершение кода, не нарушая функциональность методов ?! –

+0

Я использую RubyMine уже 4 года, и, я думаю, пока нет возможных решений для подобных проблем. Единственное возможное решение, которое я вижу, RubyMine может использовать отладчик для сохранения всех состояний приложения всеми методами, а затем использовать их при интерполяции, но я не думаю, что это будет сделано в ближайшем будущем или когда-либо. :) –

+0

@sreuter Насколько я знаю, это невозможно, хотя это будет классная функция. –

11

Несмотря на то, что это очевидно, вы можете положить

def current_user 
    super 
end 

к вашему ApplicationController, по крайней мере, чтобы избежать неопределенного предупреждения метода во всех контроллерах. Я не имел никакого успеха, говоря RubyMine автозаполнения, используя двор:

# @return [User] 
def current_user 
    super 
end 
+0

Спасибо, человек! :) – SlyDeath

+1

Просто попробовал это с помощью двора с IntelliJ 15, и автозаполнение через двор работало для меня! Вы можете получить автозаполнение, чтобы работать в представлениях, добавив то же самое к ApplicationHelper. – xeorem