0

我对控制器操作很好奇,如何对嵌套参数进行一些简单的验证?

def create
# validate incoming post request
errors = Array.new
person = params[:person]
event  = params[:event]

errors << "person email should not be empty" if person[:email].blank?
errors << "person name should not be empty"  if person[:name].blank?
errors << "event name should not be empty"   if event[:name].blank?

这种类型的支票令人讨厌。我正在尝试扫描一些嵌套的 json 参数,例如在

    "person":
            {
                    "email":"foo@gmail.com",
                    "name":"foo"
            },

这将很好地验证,因为嵌套名称在那里。虽然如果我在没有嵌套值的情况下发出请求,它会失败。我怎么能写一个条件来检查嵌套值,如果它是空的,只有在错误值中填充。否则,如果没有嵌套值,则照常继续。

4

1 回答 1

1

你可以使用 has_key 吗?Hash 类上可用的方法。

errors << "person email should not be empty" if person.has_key?(:email) && person[:email].blank?
于 2013-07-11T03:44:36.797 回答