创建current_something帮助器

时间:2011-05-06 13:12:37

标签: ruby-on-rails ruby-on-rails-3

我使用devise插件并且有current_user个助手。我的用户可以在应用程序中拥有许多配置文件,因此用户有has_many :profiles并且其中一个是活动的。

我如何以及在哪里创建助手current_profile

此致

3 个答案:

答案 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方法可用于任何视图,只需在应用程序控制器中声明它,你就应该很好。