首页 > 解决方案 > Rail 4:如何删除所有带有连接结果的查询

问题描述

我正在尝试使用两个表之间的连接来删除查询的所有结果,例如:

availabilitiesToDelete = Mmk::Availability.find_by_sql(["SELECT a.id
                                              FROM mmk_availabilities a, mmk_resources r 
                                              WHERE a.resource_id = r.id
                                              AND r.company_id = ?", mmkCompany.id])              
              availabilitiesToDelete.delete_all

但我收到错误

NoMethodError (undefined method `delete_all' for #<Array:0x007fa657f2a4e0>)

我该怎么做?

标签: ruby-on-rails-4

解决方案


find_by_sql在 rails-4 中返回Array对象而不是ActiveRecord::Relation对象。delete_all是 AR 查询,在您的情况下会引发错误。

也许您可以进一步进行,

availabilitiesToDelete.each(&:delete)

推荐阅读