问题标签 [before-filter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
834 浏览

ruby-on-rails - 在 Rails 中:从与模型无关的表单中检索用户输入,在控制器中使用结果

这是我正在尝试做的简化版本:

  1. 在执行任何其他操作之前,向用户提供一个表单以检索字符串。
  2. 输入字符串,然后重定向到默认的控制器动作(例如索引)。字符串只需要存在,不需要其他验证。
  3. 该字符串必须可用于此控制器中的所有操作(作为实例变量?)。

我对 Rails 很陌生,但这似乎不应该非常难,所以我觉得有点愚蠢。

我试过的:我有一个before_filter重定向到一个看起来像的私有方法

get_string方法看起来像

这失败了,因为我在同一个操作中有两个渲染或重定向调用。当然,我可以先把它拿出来respond_to,但结果是控制器被困在了get_string方法中。我或多或少可以看出为什么会这样,但我不知道如何解决它并爆发。我需要能够显示一个表单(视图),获取然后对输入字符串执行某些操作,然后正常进行。

get_string.html.erb文件看起来像

我会感谢任何帮助!

编辑

感谢您的回复......
@Laurie Young:你是对的,我误会了。出于某种原因,我认为用户调用的任何给定控制器的实例都会在他们的会话中持续存在,并且 Rails 的一些魔力在于跟踪与每个用户会话关联的对象。我可以看到为什么回想起来这并没有多大意义,以及为什么我尝试使用实例变量(我认为会持续存在)不起作用。也谢谢你:)

0 投票
4 回答
1484 浏览

ruby-on-rails - 具有动态信息的 before_filter

我正在尝试将过滤器添加到基于某个角色(使用 role_requirement)的控制器,然后是每个用户拥有的 company_id。

所以基本上我需要这样的东西:

结尾

我收到 nil:NilClass 的未定义方法“company_id”的错误

我将不胜感激任何指导。谢谢

0 投票
3 回答
2070 浏览

ruby-on-rails - rails:在过滤器之前放置和中断

我想要一个像“must_have_permission_to_write”这样的前置过滤器,当用户无权写入时调用它会呈现一条消息,说“你不能这样做!” 并返回。

问题是我得到“每个动作只能渲染或重定向一次”当然......我怎样才能停止前过滤器中的执行?谢谢

0 投票
5 回答
2377 浏览

ruby-on-rails - 当 Rails ActiveRecord before_create 过滤器返回 false 时,如何防止数据库更改被回滚?

我在我的 Rails ActiveRecord 模型之一中添加了 before_create 过滤器,并且在该过滤器中我正在执行一些数据库更新。

有时我从过滤器返回 false 以防止创建目标模型,但这会导致我所做的所有其他数据库更改(在过滤器内)被回滚。

我怎样才能防止这种情况?

更新#1:这是一些解释我的问题的伪代码:

更新#2:下面有一些很好的答案,但每个都有其缺点。我最终像这样覆盖了 create 方法:

0 投票
4 回答
2794 浏览

ruby-on-rails - 我应该限制登录rails的尝试吗?

我正在考虑为 Ruby on Rails 构建一个登录系统,就像这个一样

http://visionmasterdesigns.com/tutorial-create-a-login-system-in-ruby-on-rails/

在安全性方面,如果用户名错误,我是否应该限制用户登录的尝试?

此外,登录的基本步骤似乎是:

  • 针对数据库中的用户名和密码进行身份验证
  • 如果用户名和密码真实,则创建会话变量
  • 过滤之前,以便需要登录的页面受到保护。

还有什么我应该考虑的吗?

0 投票
3 回答
17995 浏览

ruby-on-rails - Rails 中的 RSpec:如何跳过 before_filter?

我正在尝试测试我的控制器并保持关注点分离。

第一个问题是“谁能够执行哪个动作?”
我使用authlogic进行身份验证,使用be9 的 acl9进行授权。但这不重要,我所有的授权问题都在before_filter. 我正在before_filter通过与此类似的东西进行测试:

这个规范工作得很好!

现在,第二个问题是“这个动作是否做了它应该做的事情?”
这不涉及检查授权。最好/最干净的解决方案是before_filter一起跳过所有这些,只需执行以下操作:

无需担心必须先登录哪个角色的用户。现在我这样解决了:

如果我现在决定我的站点管理员不再有权访问索引操作,它不仅会破坏一个规范 - 即在这种情况下必须破坏的规范 - 而且还会破坏完全不相关的第二个规范。

我知道这基本上是一个小问题,但如果有人能想出一个(优雅的)解决方案,那就太好了!

0 投票
1 回答
353 浏览

ruby-on-rails - 在 ApplicationController 的子类中使用私有或受保护方法时出错

我有一个在一些控制器之间共享的过滤器,它主要在 ApplicationController 中声明为私有。此方法为控制器设置查找和分页条件。

我收到此错误:

为什么会发生?

0 投票
4 回答
49255 浏览

ruby-on-rails - 在 Rails 中跳过 before_filter

为了清楚起见,名称和对象已被简化。基本概念保持不变。

我有三个控制器:dogcathorse。这些控制器都继承自控制器animal。在控制器animal中,我有一个 before 过滤器,用于对用户进行身份验证:

show操作中dog,我需要对所有用户开放访问(跳过身份验证)。

如果我要单独为 编写身份验证dog,我可以这样做:

但由于dog继承自animal,我无权访问特定于控制器的操作。添加控制器不仅会跳过对 的动作的认证:except => :show,还会跳过和的动作。这种行为是不希望的。animalshowdogcathorse

我如何才能跳过身份验证仅用于同时仍继承自的show操作?doganimal

0 投票
2 回答
300 浏览

ruby-on-rails - Rails:如何防止在显示 swf flash 文件时单击链接

我正在寻找一种防止我的 rails 应用程序中的链接在 swf 文件处于活动状态时产生任何影响的好方法......

我可以用 before_filter 做到这一点吗?还是我需要javascript?

马库斯

0 投票
1 回答
8013 浏览

ruby-on-rails - Rails before_filter 和动作识别

我想在我的控制器中编写一个 before_filter 来识别接下来将执行的操作。这是出于授权目的(这有点像 role_requirement 插件做的......)

例如:如果用户键入此 url http://localhost:3000/users,默认它会转到 users/index 操作。在我的用户控制器中,我有一个前置过滤方法说“check_permission”,我希望该方法将“索引”作为操作。