在Rails 4中的装饰器中使用Devise辅助方法

时间:2014-09-28 01:58:22

标签: ruby-on-rails devise

我的Rails 4项目中有一个装饰器:app/decorators/course_decorator.rb

course_decorator.rb内,我想定义一个方法,如果满足条件,它将显示一个链接。 例如,我正在做:

class CourseDecorator

def initialize(course)
  @course = course
end

def view_button
  if user_signed_in?
    link_to "View", @course
  end
end

我正在使用Devise gem进行用户身份验证,user_signed_in?是Devise提供的帮助。

在我的视图中尝试使用view_button方法时,我没有遇到方法错误。该错误属于undefined method 'user_signed_in?' for #Course:0x007fcc7ccb8310

我认为这是因为decorator在Course对象上调用了user_signed_in?方法。在这种情况下,如何正确实施user_signed_in?方法?

1 个答案:

答案 0 :(得分:0)

来自Devise wiki here

Devise包含一些功能规格的测试助手。要使用它们,您需要在功能测试中包含Devise,方法是在

的底部添加以下内容
test/test_helper.rb file:

class ActionController::TestCase  
  include Devise::TestHelpers  
end  

如果您正在使用RSpec,则可以将以下内容放入名为spec / support

的文件中
/devise.rb or in your spec/spec_helper.rb:  

RSpec.configure do |config|  
  config.include Devise::TestHelpers, type: :controller  
end