我有以下 application_controller 方法:
def current_account
@current_account ||= Account.find_by_subdomain(request.subdomain)
end
我应该使用 before_filter 还是 helper_method 来调用它?两者之间有什么区别,在这种情况下我应该考虑什么权衡?
谢谢。
更新以获得更好的清晰度
我发现我可以使用 thebefore_filter
而不是helper_method
我可以从我的视图中调用控制器定义的方法。也许这是我安排代码的方式,所以这就是我所拥有的:
控制器/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
include SessionsHelper
before_filter :current_account
helper_method :current_user
end
助手/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
控制器/spaces_controller.rb
class SpacesController < ApplicationController
def home
unless logged_in?
redirect_to login_path
end
end
end
意见/空间/home.html.erb
<%= current_account.inspect %>
理论上,这应该行不通,对吧?