2014-10-29 18 views

risposta

15

Risposta breve:?
Non stai facendo nulla di male. In questo momento, è il miglior Rubino che può fare.

Leggermente più lungo rispondere:
Come probabilmente sapete, Ruby può essere un linguaggio molto dinamica. Devise fa molto affidamento sulle capacità di metaprogrammazione del linguaggio. Gli helper, come current_user, vengono generati in fase di runtime, rendendo inefficienti le capacità di analisi statica di Rubymine.

Rubino avrebbe bisogno di un supporto speciale per Devise e, per quanto ne so, non lo è.

+0

Forse c'è la possibilità di fornire alcuni metodi fittizi da qualche parte per ottenere il tipo hinting e il completamento del codice senza rompere la funzionalità dei metodi ?! –

+0

Sto usando RubyMine già da 4 anni, e suppongo che non ci siano ancora possibili soluzioni per questo tipo di problemi. L'unica soluzione possibile, come posso vedere, è che RubyMine può utilizzare il debugger per salvare tutti gli stati dell'applicazione con tutti i metodi e quindi utilizzarli durante l'interpolazione, ma non penso che verrà fatto nel prossimo futuro o mai. :) –

+0

@sreuter Per quanto ne so non è possibile, anche se sarebbe una caratteristica interessante. –

11

Anche se è ovvio, si può mettere

def current_user 
    super 
end 

al ApplicationController almeno per evitare di metodo di avvertimento non definito in tutti i controllori. Non ho avuto successo dicendo RubyMine per completare automaticamente utilizzando cantiere:

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

Grazie amico! :) – SlyDeath

+1

Ho appena provato questo usando il cantiere con IntelliJ 15 e il completamento automatico via yard ha funzionato per me! È possibile ottenere il completamento automatico per lavorare anche nelle viste, aggiungendo la stessa cosa a ApplicationHelper. – xeorem