0

我在我的 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 线上

我想我可以先检查请求是否在控制器中包含子域,然后尝试在有或没有子域的情况下保存它,我认为这应该可以解决上述问题,但话又说回来,我不完全确定问题出在哪里.

有什么建议么?

4

1 回答 1

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
于 2013-04-07T20:23:16.363 回答