轨道控制器中格式错误的参数

时间:2014-03-24 17:09:30

标签: ruby-on-rails params

我正在编写一个动作,会收到这样的参数哈希:

user = {:name=>"Adam", :age=>15, :nickname=>"mynickname"}

我是否应该关心params是否是正确的哈希?我特别想知道的是,我是否需要检查用户是否是哈希值而不是字符串,整数或其他内容。

我写这个来获取昵称值

def nickname
    if params[:user].present?
        params[:user][:nickname].presence
    end
end

但如果params [:user]是String而不是hash,则失败。我应该为此编写验证吗?如果是这样,编写它们的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

nickname = params[:user][:nickname] rescue nil
如果在浏览哈希时发生任何错误,

昵称将为nil。

小心rescue可以隐藏一些错误,在这种情况下,它非常无害,因为我们所做的就是从散列中获取值。