- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用pundit
和devise
gem 。我有一个删除链接,仅当您是管理员时才会显示。我有一个集成测试,我想验证删除链接仅对管理员显示。
test 'comment delete link shows when it should' do
log_in_as @admin
get movie_path(@movie)
assert_select 'a[href=?]', movie_comment_path(comments(:one), @movie.id)
end
test_helper.rb
看起来像这样:
...
class ActiveSupport::TestCase
...
def log_in_as(user, options = {})
password = options[:password] || 'password'
if integration_test?
post user_session_path, 'user[email]' => user.email, 'user[password]' => user.password
else
Devise::TestHelpers.sign_in user
end
end
private
# Returns true inside an integration test.
def integration_test?
defined?(post_via_redirect)
end
end
response.body
看起来不错,但实际上没有删除链接。当我运行开发服务器并亲自访问该页面时,就会出现一个。我将其范围缩小为pundit在策略中使用的
current_user
传递,其值为
nil
。这是我的
comment_policy.rb
:
class CommentPolicy
attr_reader :current_user, :comment
def initialize(current_user, model)
@current_user = current_user
@comment = model
end
def create?
if @current_user
@current_user.member? or @current_user.content_creator? or @current_user.moderator? or @current_user.admin?
end
end
def destroy?
if @current_user
@current_user == @comment.user or @current_user.moderator? or @current_user.admin?
end
end
end
devise
/
sign_in
帮助程序也可以在集成测试中使用,那么在使用Rails 5时
sign_out
会开箱即用。但是,我仍然会遇到不知道
pundit
是什么的
current_user
问题吗?我假设这一切在 Controller 测试中都能正常工作,因为
current_user
的作用域是 Controller ?非常感谢您对此主题有任何了解,但是我真的很想弄清楚如何使集成测试与该设置一起使用,因为我现在有大约十亿个要写的东西。
最佳答案
这并不完全重要,但是它需要在策略中使用current_user还是可以仅在策略中使用user。我的意思是,根据Github上的elabs/pundit README,我将在各处都使用@user
和user
而不是current_user
。如果我感到困惑,请阅读自述文件。
此外,当您对请求没有有效的CSRF token 时,通常会出现nil
的current_user
。当您通过转到localhost:3000
或w/e在网站上手动执行此操作时,首先要在登录路径上执行get
,然后再使用凭据在登录路径上进行发布。在您的集成测试中,我似乎看不到您在哪里执行get
来获取 session 的CSRF。
希望这可以帮助!!!
关于ruby-on-rails-4 - Ruby on Rails Pundit的current_user在集成测试中为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001198/
Devise自述文件没有提及任何关于 @current_user 和 I don't see any reference to it in Devise's source code 的内容- 也不在我
我关注this post 。在我看来: - if current_user - if current_user.present? - if current_user.exists? - if curr
我关注this post 。在我看来: - if current_user - if current_user.present? - if current_user.exists? - if curr
刚开始使用我的应用程序身份验证设计开发,但是在从模型访问 current_user 时遇到了麻烦。我从 Controller 访问它没有问题。 对于我的场景,我需要获取当前用户 ID 以跟踪谁编辑了博
我在我的flask应用程序中使用flask_login扩展名登录用户。如您所知,此扩展名具有存储current_user的变量。该代码可以正常运行,除非要进行测试。 当我测试代码(使用unittest
我想用 Swift 为 OS X 应用程序定义一个变量。 但我总是收到此错误:“CURRENT_USER 的重新声明无效”。 这是我写的: var CURRENT_USER: Firebase? 我也
例如我有一个用户和一个地址,关系如下: class User < ActiveRecord::Base devise :database_authenticatable, :registerabl
我正在按照 teamtreehouse.com guide 构建我的第一个 Ruby on Rails 应用程序(ruby 2.0.0p353) . 我正在使用设计 3.2.2 devise在 app
我对 How to customize Devise to store more informations in the session? 有同样的问题 当我使用 current_user和 user
要为我的问题提供更多背景信息,请参阅此 Github 问题 - https://github.com/getsentry/raven-ruby/issues/144 我正在使用 raven这是一个错误
鉴于以下模型: Room (id, title) RoomMembers (id, room_id) RoomFeed, also an observer 当房间标题更新时,我想创建一个 RoomFe
我在 Rails 应用程序的 lib 目录中创建了一个类。该类需要访问 Devise 的 current_user。 我还应该指出,这个 lib 类经常从模型代码中访问,因此不能将 current_u
在 Flask 中,我想了解如何创建一个行为类似于 current_user 的函数,因为它在任何地方( Controller 和 View )都可用,但我很难真正知道它是什么搜索以找到答案。 我能找
我目前正在阅读 RoR 教程(http://railstutorial.org/chapters/sign-in-sign-out#sec:signin_success 是相关部分),这似乎相当不错,
我在 rails5 中使用 Active Model Serializer 0.10.7 我想知道如何在序列化程序中访问设计 current_user。 current_user 应该默认设置为范围。
如何将参数传递给我的 current_user 重定向? # SessionHelper.rb def current_user if(user_id = session[:user_id]
默认列值存在问题... 以下作品: alter table chartdata.reddit_comments add modified_datetime timestamp default now(
我使用以下命令检查 PostgreSQL 数据库中用户的组或角色, select rolname from pg_authid where pg_has_role('some_username', r
我正在使用系统测试来验证以下流程是否按用户预期的方式工作: 在表格中注册 登录 访问帐户页面 更新账户信息 但是,我在创建用户后遇到错误: Puma caught this error: Couldn
我正在使用 Flask-Login,我想通过调用 current_user.is_authenticated() 检查用户是否已登录。 我的 Flask 应用程序被组织成蓝图,其中包含一个主要的 __
我是一名优秀的程序员,十分优秀!