这是一个让我困扰了一段时间的人,虽然回想起来应该是显而易见的.我收到了错误消息
NoMethodError: undefined method `constantize' for 0:Fixnum
Run Code Online (Sandbox Code Playgroud)
通过多态关联访问模型时 原来belongs_to关联一侧的表有一个整数type列而不是一个字符串.
很容易修复,但似乎Rails应该在这种情况下引发错误 - 相反,它很乐意在类型列中添加0行.
发生这种情况是因为通过请求发送的参数是作为字符串传递的,因此对于从params设置的整数列,rails会在字符串上调用to_i来获取整数.如果它无法解析它的整数(如果字符串不以某些数字开头会发生),则to_i返回0.这就是ruby的工作原理.有时rails会发现这个并发出警告,但它不可能知道它必须检查的每个列的名称.例如检查出来(从控制台)
>> quiz = Quiz.first
=> <a quiz>
>> quiz.user_id = "foo"
=> "foo"
>> quiz.save
=> true
>> quiz.user_id
=> 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1203 次 |
| 最近记录: |