我正在编写一个动作,会收到这样的参数哈希:
user = {:name=>"Adam", :age=>15, :nickname=>"mynickname"}
我是否应该关心params是否是正确的哈希?我特别想知道的是,我是否需要检查用户是否是哈希值而不是字符串,整数或其他内容。
我写这个来获取昵称值
def nickname
if params[:user].present?
params[:user][:nickname].presence
end
end
但如果params [:user]是String而不是hash,则失败。我应该为此编写验证吗?如果是这样,编写它们的最佳做法是什么?
答案 0 :(得分:0)
您可以执行以下操作:
nickname = params[:user][:nickname] rescue nil
如果在浏览哈希时发生任何错误,昵称将为nil。
小心rescue
可以隐藏一些错误,在这种情况下,它非常无害,因为我们所做的就是从散列中获取值。