2017-05-01 1 views
1

Wenn ich die Rails Gerüst-Generator für die Artikel-Ressource verwenden, wird es ein vor-Filter und ein eigenes Verfahren wie diese nunIst der Controller before_action: set_x Methode benötigt?

# app/controllers/articles_controller.rb 
before_action :set_article, only: [:show, :edit, :update, :destroy] 
... 
private 
    def set_article 
    @article = Article.find(params[:id]) 
    end 

erstellen Ich verstehe das, weil anstelle des Controllers DRY macht @article = Article.find(params[:id]) 4mal der Zugabe, die 4 Zeilen Code, können Sie das oben genannte verwenden und Sie sparen sich selbst ... nun, es ist immer noch 4 Zeilen und eine ähnliche Anzahl von Tastenanschlägen. Aber wenn Sie es ändern möchten, müssen Sie es nur an einem Ort tun. Aber du opfierst Klarheit, denn um zu sehen, dass @Artikel in diesen 4 Aktionen definiert ist, musst du oben auf den Vorher-Filter schauen, dann auf die Privatmethode unten und dann zurück auf die Aktion. Für mich persönlich ist das kein Vorteil, also lege ich das immer in die vier Aktionen. Meine Frage ist, ist dies nur eine Frage der persönlichen Präferenz oder gibt es einen zwingenden Grund, immer die DRY-Methode zu verwenden, die ich nicht sehe?

Antwort

0

Wenn die Logik des Abrufs ein wenig komplizierter wird als nur eine Zeile, ist es sehr hilfreich, aber nicht unbedingt notwendig. Sie könnten auch die set_article Methode so lassen, wie sie ist, entfernen Sie die before_action und nennen Sie es explizit in den Aktionen, die es brauchen, ein bisschen ein Kompromiss zwischen before_action und wiederholen Sie es in allen Aktionen. Das ist sehr praktisch, wenn die Logik nur aus ein paar Codezeilen besteht.

+1

Okay, ich wollte nur sicher gehen, dass ich keine Kardinalregel bricht, wenn ich sie nicht benutze. Vielen Dank. –

Verwandte Themen