提问人:Akshay Goyal 提问时间:4/6/2023 更新时间:4/6/2023 访问量:56
Rails belogs_to包括选择查询 - ActiveModel::MissingAttributeError
Rails belogs_to includes select query - ActiveModel::MissingAttributeError
问:
我有两张表:
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
提前致谢
答:
1赞
Sebastián Palma
4/6/2023
#1
正因为如此;
class ActiveRecord::Associations::Preloader::Association::LoaderRecords
...
def owner_key_name
reflection.join_foreign_key
end
end
提取调用中表的外键。由于 ActiveRecord 需要知道如何联接哪些表并加载哪些记录,因此成为 select 子句中的必填列。includes
order_lines.order_id
要修复它,只需将该列添加到您的选择中;order_id
OrderLine.includes(:order).select(:id, :order_id).first
评论
order_id
order_lines