我想使用before操作来选择中断处理,如果它不符合某些条件(例如,对象不是由这样的用户拥有等)
我需要使用它,因为我有一个更复杂的场景 需要在访问权限之前加载对象 确定了,所以我会遇到我想要中断的情况 如果它是无效访问的行动,无论如何我可以做到这一点?
答案 0 :(得分:1)
好的,这是我在使用RC时想到的。
通常的RC行动类似于:
def show
load_object
before :show
response_for :show
rescue ActiveRecord::RecordNotFound
response_for :show_fails
end
所以假设你想在load_object之后中断show,如果某些条件失败的话。
我能想到的最好的方法(修改RC :)除外:
答案 1 :(得分:0)
假设您指的是before_filter
:
任何render
或redirect
调用都应该中止过滤器链并执行操作。因此,只需将访问控制过滤器放在加载“东西”之后,然后呈现错误消息(使用适当的状态代码以获得良好的Web业力并防止w3c击败)。
这只是另一个铁轨区域,只要你不太认真就可以正常工作。
任何帮助还是我错过了这一点?
答案 2 :(得分:0)
维塔利的方法可能是正确的,但我也有一个有趣的过度设计方法,所以作为参考发布:
那也可以完成这项工作。
答案 3 :(得分:0)
如果您发现自己经常编写before_filters进行前置条件检查,您可能会发现Aegis有用。它允许您在单个文件中定义访问规则,以便您可以一目了然地查看可以访问的内容。
它也是为了与resource_controller轻松集成而构建的。