首页 > 解决方案 > 不推荐将 ast 委托给 arel

问题描述

我在 Rails 5.1 应用程序中有以下内容

class Products::LinkableToEvent
  ProductTable = Product.arel_table
  EventTable = Event.arel_table

  def self.call(slug)
    Product.all.
    where(ProductTable[:id].in(ProductTable.project(ProductTable[:id])
          .except(Product.select(:id)
          .joins("INNER JOIN events ON (products.id = 
          ANY(events.product_ids))")                                          
          .where(EventTable[:slug].eq(slug))
          .unscope(:order))))
  end
end

这会产生以下警告。

弃用警告:将 ast 委托给 arel 已被弃用,并将在 Rails 6.0 中删除。(从 /em/app/queries/products/linkable_to_event.rb:8 调用)

8号线是.except(Product.select(:id)

如何删除警告?

标签: ruby-on-railsarel

解决方案


推荐阅读