查询时
Product.find('12aaaa')
我希望它返回nil。
但是Rails用Product.find(12)
返回了我
如何停止这种行为?
p.s:请不要建议我将id列转换为字符串, 我显然不会这样做,它已被索引并设置为自动递增。 而且我也不认为将id转换为字符串也是一个好主意。
谢谢
答案 0 :(得分:1)
我希望它返回nil
find,除了 id 或 ID列表,或 ID数组作为参数。因此,当传递诸如'12aaaa'
之类的 string自变量时,find
使用to_i
强制,除非{{1}的数据类型}是id
。
所以
string
将成为
Product.find('12aaaa') #'12aaaa'.to_i = 12
如何停止这种行为?
您不能这样做,因为这是默认行为。而且,我不建议使用任何 monkey-patching 更改默认行为。
注意:
找不到记录时, Product.find(12)
不返回nil 。相反,它引发一个find
异常。而ActiveRecord::RecordNotFound
返回find_by