我的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?
方法?
答案 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