ruby-on-rails - 编写此 if 子句的更好/更清晰的方式

标签 ruby-on-rails ruby ruby-on-rails-3 refactoring

以下是我的 UsersController 操作中的代码。我有一个来自 session 的 current_user 对象,如果没有传递到操作中,我想使用当前用户的 ID。

def show
  id = params[:id]
  id = current_user.id if id.blank?
  @user = User.find(id)
end

我这样做是为了最终让管理员能够编辑其他用户的信息。这就是为什么我不使用 @user = User.find(current_user.id) 的原因。

想法/建议?我可能还可以做一个三元运算符,比如

params[:id].present? ? id = params[:id] : id = current_user.id

但我认为可能有更好的方法。

最佳答案

我喜欢这样

def show
  @user = User.find(params[:id] || current_user.id)
end

关于ruby-on-rails - 编写此 if 子句的更好/更清晰的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13382919/

相关文章:

mysql - 在 Ruby on Rails 4 中查询以根据当前用户进行选择

ruby-on-rails - 给定工作日和自午夜以来的分钟数,生成时间对象

ruby-on-rails - 如何修复Rails 5.1.7中的 `uninitialised constant ' ActiveRecord_Relation'`?

Ruby:避免多个 "or"语句?

ruby-on-rails - 如何优雅地为具有多态关联的模型构建表单?

ruby-on-rails-3 - 当我尝试通过 ajax 进行身份验证时,Warden 策略中的参数为空

javascript - Rails 解析 Ransack 参数并提交

Ruby-On-Rails 如何只允许当前用户编辑和删除他们创建的帖子

ruby - 在 Sprockets 编译任务中禁用文件摘要

ruby-on-rails - Rails 3 中的嵌套模型错误