【问题标题】:How would this rails query be on sql query?这个 rails 查询如何在 sql 查询上进行?
【发布时间】:2016-07-26 17:15:22
【问题描述】:

我正在尝试直接在 mysql 服务器数据库上运行类似的东西:

SupportRequest.all.map{ |support_request| SupportRequestFeedback.create(support_request_id: support_request.id) if support_request.support_request_feedback == nil}

我知道它产生的查询,但不知道如何在 1 个查询命令(使用循环)中实现?

【问题讨论】:

  • 您的问题能说得清楚一点吗?您的意思是要优化查询还是要知道将生成的 SQL?还是别的什么?
  • @oreoluwa 我想知道它生成的查询。

标签: mysql sql ruby-on-rails


【解决方案1】:

您可以在 rails 控制台输入此行以显示查询:

ActiveRecord::Base.logger = Logger.new(STDOUT)

然后输入您的代码,就会显示查询。

【讨论】:

  • 查询显示但只显示执行一一。我想要一个在一个命令中完成所有事情的查询(在一个循环中)
【解决方案2】:

我可能错了,但我不认为 Rails 提供了立即执行此类操作的调用。

不过,您可以设置一个服务来为您执行此操作:

support_requests_without_feedback = SupportRequest.includes(:support_request_feedback).where(support_request_feedback: {id: nil})

您可以使用active_record-import gem 来实现大量数据库插入,或者您可以使用这个:(虽然不是那么有效):

support_requests_without_feedback.map{|sr| sr.support_request_feedback.create }

【讨论】:

  • 我希望能够直接在 mysql 控制台上运行 sql 查询命令来实现相同的结果,而不是在 rails 上。 rails 命令是我在最初的帖子中发布的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
相关资源
最近更新 更多