我有以下课程:
class Order
has_many :line_items
end
class LineItem
belongs_to :order
has_many :line_item_production_items
has_many :production_items, through: :line_item_production_items
end
class ProductionItem
has_many :line_item_production_items
has_many :line_items, through: :ine_item_production_items
belongs_to :order
end
我想为 ProductionItem 创建关联:
belongs_to :order, through: :line_items
我知道与生产项目关联的所有
line_items
都具有完全相同的顺序,因此只会有 1 个不同的顺序。我通过关联找到了这篇文章belongs_to,并尝试在LineItem
中使用以下行:
base.delegate :order, to: :production_items
ArgumentError:方法 .group() 必须包含参数),因为 order
是保留关键字。我无法更改名称
order
,因为它是我使用的电子商务插件的一部分。有什么方法可以在 ActiveRecord 中创建此关联,这样我就可以执行像
ProductionItem.includes(order: [:bill_address, :ship_address]).where(WHERE_QUERY)
这样的查询而不会抛出错误?
Order
包含
ProductionItem
,您需要反规范化并将
Order
FK 添加到
ProductionItem
表中。否则,您可以通过关联的
LineItem
预先加载,使用当前的设置来完成此操作,如下所示:
ProductionItem.includes(line_items: {order: [:bill_address, :ship_address]}).where(WHERE_QUERY)