Rails模型验证挂起PUT请求

时间:2013-04-07 20:19:23

标签: javascript ruby-on-rails backbone.js

我在User.rb模型中有这个用来在保存之前正确格式化用户的子域名:

def subdomain=(c)
   write_attribute(:subdomain, c.tr('^A-Za-z0-9', '').downcase) 
end

但是,当我向API发出客户端(骨干)PUT请求时,更新不包含子域的属性...

Request Payload: { bg_hue: "359", id: 4 }

..以上自定义模型验证导致500响应,指定了以下错误:

NoMethodError at /user/4=================================> undefined method `tr' for nil:NilClass

意思是,它挂在模型

中的c.tr行上

我想我可以检查请求是否首先在控制器中包含子域,然后尝试使用或不使用子域保存它,我认为应该解决上述问题,但话又说回来,我不完全确定是什么问题是。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

错误消息告诉您undefined method `tr' for nil:NilClass。问题是传入的值cnil。你可能应该这样做:

def subdomain=(c)
   write_attribute(:subdomain, c.tr('^A-Za-z0-9', '').downcase) unless c.nil?
end