ruby-on-rails - Rails - Active Record 查询不查询变量赋值(想要立即加载)

标签 ruby-on-rails postgresql rails-activerecord

此查询返回所有提交的问题,这些问题提交的 rubric_item_evaluations 的值为 Present=true,并且评分细则项的值为 @rubric_item.id

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

然后我们销毁标题项

@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语句!

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

最佳答案

当你写下这个:

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/

相关文章:

ruby-on-rails - 如何在 Rails 中添加自定义 HTTP 响应 header ?

ruby-on-rails - 嵌套模型和父验证

postgresql - 如何从 postgresql 中的表创建 hstore?

ruby-on-rails - 在 Ruby on Rails 中推送到数组

ruby-on-rails - 核心中的 find_by() 和 FinderMethods 中的 find_by() 有什么区别?

ruby-on-rails - Rails 添加两个具有事件记录结果的范围

ruby-on-rails - 如何确保根据事件记录对象属性最初检查 rails f.check_box(不是 check_box_tag)?

ruby-on-rails - Rails find_by_sql - 从字面上使用 "?"而不是作为绑定(bind)变量?

ruby-on-rails - 对模型的多个字段施加唯一约束

java - 如何将带有 jdbc 准备语句的 SqlDescriptor 写入 tsrange 列?