编写这个if子句的更好/更清晰的方式

时间:2012-11-14 16:28:24

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

以下是我UsersController行动的代码。我在会话中有一个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

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

2 个答案:

答案 0 :(得分:7)

我更喜欢这种方式

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

答案 1 :(得分:0)

您可以使用CanCan gem

我遵循本教程:Tony Amoyal website