gpt4 book ai didi

ruby - 如何在不委托(delegate)给 Arel 的情况下在 Rails 5.2 中调用联合

转载 作者:行者123 更新时间:2023-12-04 21:30:40 29 4
gpt4 key购买 nike

在 rails 5.0 我可以写一个查询

class DC < ApplicationRecord
has_many :b_elements, through: :c_node
has_many :d_elements, through: :e_node

def both
union = b_elements.union(d_elements)
elements = Element.arel_table
Element.from(elements.create_table_alias(union, :elements))
end
end

当我升级到 rails 5.2 时出现弃用错误:

弃用警告:将联合委托(delegate)给 arel 已被弃用,并将在 Rails 6.0 中删除。 (从...调用)
弃用警告:将 ast 委托(delegate)给 arel 已被弃用,并将在 Rails 6.0 中删除。 (从...调用)

在 Rails 5.2 中调用联合/相交的正确方法是什么

最佳答案

您可以使用 ActiveRecord::QueryMethods#arel 显式使用 arel 对象而不是 AR 关系的方法:

  def both
union = b_elements.arel.union(d_elements.arel)
elements = Element.arel_table
Element.from(elements.create_table_alias(union, :elements))
end

关于ruby - 如何在不委托(delegate)给 Arel 的情况下在 Rails 5.2 中调用联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52898708/

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