gpt4 book ai didi

mysql - 将 Rails 升级到 4.1 后,Shift 不起作用。尝试从数组中删除第一项。不再让数组使用shift

转载 作者:行者123 更新时间:2023-11-29 12:32:45 25 4
gpt4 key购买 nike

我有一个在 Rails 4.0 中工作的 rake 任务,但现在我已经升级到 4.1,它不再工作。现在我收到有关调用 shift 的错误

undefined method `shift' for #<CallBackRequest::ActiveRecord_AssociationRelation:0x007f9e5b9fb630>

rake

instructors.each do |instructor|
print "#{instructor.instructor_name} Call Back Request Report \n"
pupil_leads = instructor.call_back_requests.from_to_bill(2.weeks.ago, 1.week.ago).all
print "Found #{pupil_leads.count} Call Back Requests for period 2 weeks ago until 1 week ago.\n\n"
pupil_leads.group_by { |h| h[:telephone_number] }.values.select { |a| a.size > 1 }
pupil_leads.shift
if pupil_leads.length > 0
print "Found #{pupil_leads.count} duplicate CBRs. Proceeding to mark as non billable and resolved..\n\n\n"
pupil_leads.each do |dpl|
print "updating this pupil lead #{dpl.inspect}"
dpl.update_attributes(:billable => false, :resolved => true)
end
end
end

我的理解是,Rails 不再允许您调用 Active Record 关系上的方法,或者 Rails 在过去的某个时刻不会生成数组,而是将 Active Record 关系保留到以后。不管怎样,你都会认为在 4.1 中有一种方法可以实现这一点,只需要弹出像 .all 这样的东西。或 .select .all .pluck .take 中的另一个选择记录的方法范围。我尝试了几件事但无济于事。以为我无论如何都在使用数组进行操作,因为我有 .all在我的首字母pupil_leads线。

旁白:我问了这个How to find duplicate records in ActiveRecord other than original one一个月前,这就是为什么我使用 shift 从数组中删除第一个,以便我可以将所有其他标记为重复项。

最佳答案

是的,在 Rails >= 4.0 中,即使在关系上调用 all 后,它也不会转换为数组对象。如果您确实需要“纯”数组,则必须手动调用to_a

关于mysql - 将 Rails 升级到 4.1 后,Shift 不起作用。尝试从数组中删除第一项。不再让数组使用shift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27229525/

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