Ich habe folgende application_controller Methode:Wann sollte ich before_filter vs helper_method verwenden?
def current_account
@current_account ||= Account.find_by_subdomain(request.subdomain)
end
Soll ich es mit einem before_filter oder eine helper_method anrufen? Was ist der Unterschied zwischen den beiden und was sollte ich in diesem Fall berücksichtigen?
Danke.
UPDATE der besseren Übersicht halber
Ich finde, dass ich kann Benutzer die before_filter
anstelle des helper_method
, dass ich in der Lage Controller definiert Methoden aus meiner Ansichten zu nennen. Vielleicht ist es etwas, wie ich meinen Code angeordnet, also hier ist das, was ich habe:
Controller/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
include SessionsHelper
before_filter :current_account
helper_method :current_user
end
Helfer/sessions_helper.rb
module SessionsHelper
private
def current_account
@current_account ||= Account.find_by_subdomain(request.subdomain)
end
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
def logged_in?
if current_user
return true
else
return false
end
end
end
controller/spaces_controller.rb
class SpacesController < ApplicationController
def home
unless logged_in?
redirect_to login_path
end
end
end
views/Räume/home.html.erb
<%= current_account.inspect %>
Theoretisch sollte dies nicht funktionieren, nicht wahr?
Ich verwende derzeit ein before_filter für diese Methode und kann es aus meinen Ansichten aufrufen. Fehle ich etwas? – Nathan
Wenn diese Methode in einem Controller definiert ist, können Sie sie möglicherweise nicht in einer Ansicht aufrufen, es sei denn, Sie greifen auf die Instanzvariable ** @ current_account ** zu, was eine schlechte Praxis wäre. –
@ MaurícioLinhares, nicht wahr. Wenn er in einem Controller 'helper_method: current_account' aufruft, steht die Methode in den Ansichten zur Verfügung. – tsherif