gpt4 book ai didi

ruby-on-rails - 从 Rails 4.1.4 更新到 4.2.0 后,AR CollectionProxy 上的 "first!"引发 "undefined method [] for nil"

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:25 24 4
gpt4 key购买 nike

我开始从 Rails 4.1.4 升级到 Rails 4.2.0。好像是第一!不再支持某些事件记录关联。

first!(在 ActiveRecord::Associations::CollectionProxy 上)发生了什么导致它现在失败?

如何修复该行为,使其像在 4.1.4 中一样工作?

rails 4.1:

(byebug) user.organization.registration_codes
#<ActiveRecord::Associations::CollectionProxy [#<RegistrationCode id: 259, code: "AWESOMESAUCE" ... >]>

(byebug) user.organization.registration_codes.first!
#<RegistrationCode id: 259, code: "AWESOMESAUCE" ... >

rails 4.2:

(byebug) user.organization.registration_codes
#<ActiveRecord::Associations::CollectionProxy [#<RegistrationCode id: 259, code: "AWESOMESAUCE" ... >]>

(byebug) user.organization.registration_codes.first!
NoMethodError Exception: undefined method `[]' for nil:NilClass
nil

已更新

深入研究 ActiveRecord,我发现它在这里失败了:

def find_nth(index, offset)
if loaded?
@records[index]
else
offset += index
@offsets[offset] ||= find_nth_with_limit(offset, 1).first
end
end

loaded? 返回 true,但 @records 为 nil。投入调试器并调用 find_nth_with_limit(offset, 1).first 返回我期望的记录。

first!defined in finder_methods.rb in active record问题似乎是协会认为它已加载,但@records 为零

最佳答案

这是 Rails 中的回归。在 rails 4.2 中的加载集合上调用 bang finder 方法之一不起作用。

https://github.com/rails/rails/issues/18237

关于ruby-on-rails - 从 Rails 4.1.4 更新到 4.2.0 后,AR CollectionProxy 上的 "first!"引发 "undefined method [] for nil",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27627812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com