2013-04-07 75 views
0

我有这个在我的User.rb模型保存之前正确格式化用户的子域:Rails的模型验证挂断PUT请求

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

但是当我做一个客户端(骨干)PUT请求API,更新的属性不包含子...

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

..the上面的自定义模型验证造成500响应,指定了以下错误:

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

意义,它是挂在模型

我想我可以检查,如果请求包括在控制器第一子域名,然后尝试使用或不使用子域名保存它的c.tr线,我认为应该解决上述问题,但是再次,我不完全确定问题所在。

有什么建议吗?

回答

2

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

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

感谢罗布,像一个魅力工作。 – ac360 2013-04-07 20:32:12