Rails方法中的所有行是否都运行?

凯恩
def login_required
        unless current_user
            store_location
            flash[:notice] = I18n.t('must_be_logged_in')
            redirect_to new_user_session_path
            return false
        end
    end

我在Rails应用程序中有此方法。我的问题是,什么return false时候可以开始生产?

前一行说redirect_to new_user_session_path

def admin_required
        return false if login_required == false
        unless current_user.admin?
            store_location
            flash[:notice] = t('must_be_admin')
            redirect_to new_user_session_url
            return false
        end
    end

为了澄清起见,此方法要求login_required == false(或为true)..第一个方法将如何返回false?

WHO

困扰您的事实是a#redirect_to不是return语句:它将响应标记为必须重定向到其他地方,但不会停止执行流程。

redirect_to root_path # executed
puts "foo"            # executed
return                # executed
puts "bar"            # not executed

当您考虑#redirect_to实施时,其原因实际上是显而易见的redirect_to是由rails实现的方法,不是核心语言关键字(例如)return

现在,假设您必须实现#redirect_to自己。你会做这样的事情:

def redirect_to( url )
  response.redirect = url
end

现在,您在一个动作中调用该方法:

def index
  redirect_to root_path
  puts "foo"
end

显然,在这里,您的第二条指令#index也将被调用,因为您的#redirect_to方法没有任何意思[1]通知其调用者应停止执行。

注意,这也适用#render:它们是简单的方法,而不是指令流控制关键字。

[1]实际上,我们可以想到一种中断执行流程的方法:将异常抛出到处理重定向的类捕获的某个地方,但这通常被认为是糟糕的设计,当没有实际错误时使用异常来控制流程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检查所有行是否都符合PHP中的条件

来自分类Dev

无论数据是否存在,mysql都返回所有行

来自分类Dev

在运行SQL查询之前,DSE的Spark是否会将所有数据都放入RDD中?

来自分类Dev

是否只有在所有参数都运行后才能运行拆卸夹具?

来自分类Dev

所有字体中是否都缺少字形的unicode字符?

来自分类Dev

是否假定C / C ++中的所有函数都返回?

来自分类Dev

是否应将所有组件状态都存储在商店中?

来自分类Dev

是否将所有变量都隔离到LHS中?

来自分类Dev

shell 是否每次都遍历 PATH 中的所有目录?

来自分类Dev

RUBY 2.0.0如何在irb中运行文件,以便其所有方法都属于irb环境?

来自分类Dev

在Hadoop中,mapreduce是否所有映射器都需要与所有reducer通信?

来自分类Dev

计算机中运行的所有程序是否都显示在任务管理器的“进程”选项卡中?

来自分类Dev

检查列是否在所有行上都具有相同的值

来自分类Dev

检查表格行的所有输入/选择字段是否都具有值

来自分类Dev

如何编写R脚本检查直线?即,对于任何给定的行,一组列中的所有值是否都具有相同的值

来自分类Dev

用'+'分割字符串,并搜索表中是否所有字符串都存在于表的一行中

来自分类Dev

Python标准库中的所有类似文件的对象是否都具有`name`属性?

来自分类Dev

如何检查所有元组在python列表中是否都具有特定值

来自分类Dev

我是否应该将选择中的所有列都包括在索引中?

来自分类Dev

从redis SET中获取成员是否会将所有内容都获取到内存中?

来自分类Dev

我是否需要将所有内容都放在C ++中的类中?

来自分类Dev

确定数组 A 中的所有元素是否都存在于数组 B 中

来自分类Dev

在Eclipse中独立运行所有JUnit测试,每次都重新加载Spring上下文

来自分类Dev

当我在Git中运行此命令时,所有文件/文件夹都消失了

来自分类Dev

在 Windows 10 中运行的 Visual FoxPro 9 程序 - 所有标签都丢失,奇怪的崩溃

来自分类Dev

是否所有修改方法都调用了Array Proxy的set trap

来自分类Dev

由于所有行名称都相同,如何在php中获取行值?

来自分类Dev

如何检查数组中的所有值是否都超过特定值?

来自分类常见问题

检查列表中的所有值是否都大于某个数字

Related 相关文章

  1. 1

    如何检查所有行是否都符合PHP中的条件

  2. 2

    无论数据是否存在,mysql都返回所有行

  3. 3

    在运行SQL查询之前,DSE的Spark是否会将所有数据都放入RDD中?

  4. 4

    是否只有在所有参数都运行后才能运行拆卸夹具?

  5. 5

    所有字体中是否都缺少字形的unicode字符?

  6. 6

    是否假定C / C ++中的所有函数都返回?

  7. 7

    是否应将所有组件状态都存储在商店中?

  8. 8

    是否将所有变量都隔离到LHS中?

  9. 9

    shell 是否每次都遍历 PATH 中的所有目录?

  10. 10

    RUBY 2.0.0如何在irb中运行文件,以便其所有方法都属于irb环境?

  11. 11

    在Hadoop中,mapreduce是否所有映射器都需要与所有reducer通信?

  12. 12

    计算机中运行的所有程序是否都显示在任务管理器的“进程”选项卡中?

  13. 13

    检查列是否在所有行上都具有相同的值

  14. 14

    检查表格行的所有输入/选择字段是否都具有值

  15. 15

    如何编写R脚本检查直线?即,对于任何给定的行,一组列中的所有值是否都具有相同的值

  16. 16

    用'+'分割字符串,并搜索表中是否所有字符串都存在于表的一行中

  17. 17

    Python标准库中的所有类似文件的对象是否都具有`name`属性?

  18. 18

    如何检查所有元组在python列表中是否都具有特定值

  19. 19

    我是否应该将选择中的所有列都包括在索引中?

  20. 20

    从redis SET中获取成员是否会将所有内容都获取到内存中?

  21. 21

    我是否需要将所有内容都放在C ++中的类中?

  22. 22

    确定数组 A 中的所有元素是否都存在于数组 B 中

  23. 23

    在Eclipse中独立运行所有JUnit测试,每次都重新加载Spring上下文

  24. 24

    当我在Git中运行此命令时,所有文件/文件夹都消失了

  25. 25

    在 Windows 10 中运行的 Visual FoxPro 9 程序 - 所有标签都丢失,奇怪的崩溃

  26. 26

    是否所有修改方法都调用了Array Proxy的set trap

  27. 27

    由于所有行名称都相同,如何在php中获取行值?

  28. 28

    如何检查数组中的所有值是否都超过特定值?

  29. 29

    检查列表中的所有值是否都大于某个数字

热门标签

归档