gpt4 book ai didi

ruby-on-rails - Rails - Active Record 查询不查询变量分配(想要急切加载)

转载 作者:行者123 更新时间:2023-11-29 13:01:05 25 4
gpt4 key购买 nike

这是一个查询,它返回所有具有 rubric_item_evaluations 且 present=true 且具有带 @rubric_item.id 的 rubric 项目的问题提交

submissions_to_update = QuestionSubmission.joins(:rubric_item_evaluations).where(:rubric_item_evaluations => {:present => true , :rubric_item_id => @rubric_item.id})

然后我们销毁 rubric item

@rubric_item.destroy

然后我们遍历提交以重新评分

submissions_to_update.each do |submission|
submission.grade!
end

但出于某种原因,question_submissions_update 之后会在 .each 上被查询!到那时它不会查询正确的东西(返回一个空数组)。我很困惑...为什么它不查询初始变量赋值?

所以总的来说查询似乎发生在这里

submissions_to_update = QuestionSubmission.joins(:rubric_item_evaluations).where(:rubric_item_evaluations => {:present => true , :rubric_item_id => @rubric_item.id})
@rubric_item.destroy
# Query for submissions_to_update happening after I destroy the rubric item
submissions_to_update.each do |submission|
submission.grade!
end

如有必要,我可以显示 SQL 语句!

更新我有必要在销毁 rubric 项目之前实际执行查询。

最佳答案

当你这样写的时候:

submissions_to_update = QuestionSubmission.joins(:rubric_item_evaluations).where(:rubric_item_evaluations `=> {:present => true , :rubric_item_id => @rubric_item.id})

您正在构建一个 ActiveRecord::Relation,这是事件记录格式的查询本身,但最终您只是构建一个查询而不是执行它。

然后你刚刚说在构建查询后立即销毁@rubric_item,所以之前构建的查询之后会出错。 @rubric_item.id 不再存在于数据库中,因此连接查询将找不到任何记录。

您需要在销毁项目之前检索问题,因此实际上您需要在销毁 rubric_item 之前执行重新评分过程,例如:

submissions_to_update = QuestionSubmission.joins(:rubric_item_evaluations).where(:rubric_item_evaluations => {:present => true , :rubric_item_id => @rubric_item.id})
submissions_to_update.each do |submission|
submission.grade!
end
@rubric_item.destroy

关于ruby-on-rails - Rails - Active Record 查询不查询变量分配(想要急切加载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29861255/

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