我最近继承并更新了一个非常广泛的Rails 4应用程序。除了我注意到这些问题上的这些问题(不幸的是,不幸的是,对这些特殊情况没有自动化的测试),一切似乎都很好。
从应用程序的另一部分:
_otherstuff = Thing.where("color = orange")
_otherstuff_ids = _otherstuff.collect &:id
有问题的代码:
things = Thing.where("color = red")
things.each do |thing|
if !_otherstuff_ids.include?(thing.id)
_otherstuff << thing # Rails 5 is not happy with this anymore?
end
end
显然,如果我转换_otherstuff.to_a,那么问题就消失了。但是我的问题是,为什么这是Rails 5的问题,这不是Rails 4的问题。看起来Rails 4正在自动将关联相关转换为阵列,然后将新对象推入其中。在Rails的文档中,此操作显然将新对象添加到设置外国钥匙的关联中,在这种情况下,情况并非如此。该应用程序已经期望在少数地区进行这种行为。发生了什么变化,我现在应该知道什么?
看起来像Rails 5不支持&lt;&lt;再使用AR关系,因为存储记录的数组将被冻结
您可以在该问题中看到更多