我使用devise插件并且有current_user
个助手。我的用户可以在应用程序中拥有许多配置文件,因此用户有has_many :profiles
并且其中一个是活动的。
我如何以及在哪里创建助手current_profile
?
此致
答案 0 :(得分:4)
您可以在ApplicationController
中创建帮助程序,这将使其可用于从中继承的所有控制器和视图:
class ApplicationController < ActionController::Base
protect_from_forgery
helper_method :current_profile
private
def current_profile
# get current_profile based on current_user here
end
end
现在,您可以在任何视图/控制器中使用current_profile
。
答案 1 :(得分:1)
在User
课程中,我会添加一个方法
class User
has_many :profiles
def current_profile
@current_profile ||= profiles.where('current = ?', true).first
end
end
然后在你的控制器/助手里面你可以写:
current_user.current_profile
希望这有帮助。
答案 2 :(得分:0)
至于,实际上只是确定哪个配置文件处于活动状态(我假设一个用户在给定的会话中只能有一个活动的配置文件 - 这将使它成为现实更轻松)。所以,你要做的是使用你的会话信息来找出当前用户,然后找到活动的个人资料,然后宾果游戏 - 你已经完成了。
至于哪里,这确实是一个范围问题。如果你想让helper方法可用于任何视图,只需在应用程序控制器中声明它,你就应该很好。