Rails own_to 包括选择查询 - ActiveModel::MissingAttributeError

问题描述 投票:0回答:1

我有两张桌子:

class Order < ActiveRecord::Base
   has_many :order_lines
end
class OrderLine < ActiveRecord::Base
   belongs_to :order
end

我的代码中有一个生成以下查询的工作流程:

OrderLine.includes(:order).select(:id).first

但是,上面的查询结果是

ActiveModel::MissingAttributeError: missing attribute: order_id
。我不明白为什么我会收到此错误。以及如何解决?

提前致谢

ruby-on-rails associations
1个回答
2
投票

那是因为这个

class ActiveRecord::Associations::Preloader::Association::LoaderRecords
  ...

  def owner_key_name
    reflection.join_foreign_key
  end
end

提取

includes
调用中表的外键。由于 ActiveRecord 需要知道如何连接哪些表并加载哪些记录,因此
order_lines.order_id
成为 select 子句中的强制列。

要修复此问题,只需将

order_id
列添加到您的
select
;

OrderLine.includes(:order).select(:id, :order_id).first
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.