重定向到 root_url 并返回,除非 @user.activated

2024-03-15

这是我的users_controller方法。如果用户未激活,则应重定向。

def show
  @user = User.find(params[:id])
  redirect_to root_url and return unless @user.activated?
end

在这里,我不明白方法中是否需要 return,因为它会在执行 redirect_to 之前自动发生。我见过很多例子,但大多数都有更多的 if 语句,所以 return 会跳过这些检查。这里,有必要吗?


return 语句在这里没有任何意义。你可以只写

def show
  @user = User.find(params[:id])
  redirect_to(root_url) unless @user.activated?
end

return 语句有时被用作避免双重渲染问题的技巧,特别是在显式的情况下render。举个例子:

def show
  @user = User.find(params[:id])
  redirect_to(some_url) unless @user.activated?
  redirect_to(other_url) unless @user.other?
  render action: "hello"
end

如果此处不使用 return,则当方法返回时,您有可能定义渲染行为两次甚至三次。

一般来说,带有返回的多重渲染是编码气味的标志。您通常可以重构该操作,以便在任何操作设置渲染行为时,在旨在停止执行链的操作之前正确使用该操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重定向到 root_url 并返回,除非 @user.activated 的相关文章

  • Rails 路由:仅具有自定义操作的资源

    我有一个NotificationsController 其中我只有动作clear 我想通过执行 POST notifications clear 来访问此操作 所以我在我的路由器中写了这个 resources notifications o
  • 显示对帖子acts_as_votable进行投票的用户

    我正在使用 acts as votable gem 并实现它 以便用户可以对帖子模型进行投票 我想做的是 当我显示帖子时 我想列出用户投票的内容 我目前通过以下方式显示分数 在 posts index html erb 中 这效果很好 我只
  • 无法编辑凭证 Rails 5.2

    当我这样打开文件时 EDITOR atom wait bin rails credentials edit 我得到一个全新的文件 该文件被分配了新名称 number credentials yml 并报告 新凭据已加密并保存 但我没有机会编
  • Watir 中的鼠标移动/鼠标悬停和 JavaScript 评估

    我有一个 JavaScript 重的 Rails 应用程序 正在 watir 中进行测试 我有两个具体的测试要求 我需要能够模拟将鼠标移动到屏幕的特定区域 或者至少触发 div 的 onmouseover 事件 发生上述情况后评估 Java
  • Rails redirect_to 页面部分

    对于正常的重定向 它会是这样的redirect to root path 我如何重定向到类似的内容 localhost 3000 contact 我不仅想重定向到根 还想重定向到根 还想重定向到根页面的联系部分 这可能吗 这应该有效 red
  • Rspec——需要存根在另一个文件中调用的 File.open

    在我的测试中 我正在初始化一个名为的新类Package带有一些参数 在此类的初始化中 我打开一个在远程机器上可用的文件 但不是本地常见的文件 我想知道如何在测试中对该方法进行存根 我正在使用 rspec 和 mocha 我尝试过类似的东西
  • 设计 /users/sign_in 重定向到错误的控制器

    Vitals ruby 1 9 3p194 2012 04 20 修订版 35410 i686 linux Rails 3 2 7 设计2 1 2 GET users sign in 正在尝试重定向到错误的控制器 它已停止重定向到 weco
  • 如何仅将数字形式的字符串哈希值转换为整数

    我有从几个不同的 XML 数据库转储导入的哈希行 如下所示 但具有不同的键 Id gt 1 Name gt Cat Description gt Feline Count gt 123 我尝试使用 to i但它将非数字字符串转换为0 Fel
  • Rails 3 在迁移问题中添加外键

    有谁知道使用迁移在 Rails 3 中创建外键的方法吗 the 外国人宝石 https github com matthuhiggins foreigner对我来说效果很好 它向 Rails 迁移添加了一些方法 可以轻松创建和删除外键 ex
  • Rails sunspot-solr - 带连字符的单词

    我正在使用 sunspot rails gem 到目前为止一切都很完美 但是 我没有得到带有连字符的单词的任何搜索结果 例子 字符串 tron 返回很多结果 所有文章中提到的词都是e tron 字符串 e tron 返回 0 个结果 即使这
  • 在 Rails 3 项目中加载种子数据

    到目前为止 我一直在使用 Fixtures 以及 rake 任务来为我的数据库创建一些种子数据 这工作得很好 但我突然遇到了奇怪的问题 比如在模型中获取 autogen id 1 2 3 然后在连接模型中获取错误的 id 使得关联根本不起作
  • Ruby/Rails/Rack 代码中的“use”关键字/单词

    最近我偶然在Ruby代码中看到这个词 use 当我正在查看一些与goliath https github com postrank labs goliath 中间件等 看起来它不同于include extend and require 有人
  • Ruby on Rails:有条件地显示部分内容

    我不确定我在这里是否采用了最好的方法 但我有一个数据块 我想在搜索完成后显示它 并且之前根本不存在 首先 没有什么可显示的 其次它引用的模型为零 因此它抛出异常 我将此块放置在部分模板中 并将其添加到布局中的适当位置 有没有办法有条件地干净
  • 从 Rails 4 启用 Amazon RDS 中的 hstore 扩展

    我有一个 Rails 4 应用程序 它使用 ActiveRecord 与 PostgreSQL 9 3 数据库交互 该应用程序利用hstorePostgreSQL 中的扩展 用于在单个数据库字段中存储键值对 因此 Rails 会自动检测我对
  • 使文本在 div 内可滚动

    我希望将一些冗长的文本包含到div可以通过向上或向下滚动来查看文本 现在 描述 文本呈现如下并且位于一个 div class div
  • ActiveRecord 将字符串解析为日期时间?

    如果我通过了String into Datetime创建新的 AR 对象时 它会自动解析列 1 9 2p290 011 gt Movie new release date gt 21 Nov 1990 gt
  • 我想使用 EtherPad(或克隆版本)。我的站点正在运行 Ruby on Rails。 API 还是本地安装?

    我想在我的网站上使用 etherpad 界面 两个问题 1 是否有任何带有 etherpad api 的网站可以让我远程调用 2 如果没有 安装scala并让两者同时运行有多麻烦 Thanks 查看http piratepad net ht
  • CSV.foreach 未读取 CSV 文件中的第一列

    第一次学习Ruby来自动清理一些CSV文件 我已经设法从其他 SO 问题中拼凑出下面的脚本 但由于某种原因 该脚本没有读取原始 CSV 文件的第一列 如果我添加一个虚拟的第一列 一切都会完美运行 我缺少什么 require csv COLU
  • Rails 3:如何获取特定时区今天的日期?

    为了获得今天的日期 我这样做 Date today gt Fri 20 May 2011 我想获取特定时区的今天日期 例如 Melbourne 我的设置中有以下设置application rb config time zone Melbou
  • Rails 3.1 资产 - 开发中的奇怪服务

    我遇到了 Rails 3 1 资产管道的问题 资产在开发过程中包含两次

随机推荐