1

以下类是使用单表继承的 Quote 的子类。

class BuyQuote < Quote
  has_many :shipment_quotes, foreign_key: :quote_id
  has_many :shipments, through: :shipment_quotes
end

我想使用标准的 ActiveRecordnew方法创建一个货件。

quote = BuyQuote.create
shipment = quote.shipments.new

但是,并没有设置shipment和之间的关系quote。我认为这是由于类名与预期不同,但我不确定。

我怎样才能修改 ActiveRecord 关系,这样才能工作?

4

1 回答 1

1

看起来您在发布的代码中有一些语法错误,并且可能是不正确的表名。如果查找表不需要任何其他属性(除了将 Shipment 与 Quote 相关联),我将只使用简单的 has_and_belongs_to_many 关系。这取决于您是否计划将货物与多个报价相关联。

class BuyQuote < Quote
  has_many :shipments_quotes, :foreign_key => :quote_id
  has_many :shipments, :through => :shipments_quotes
end

或与 habtm 关系:

class BuyQuote < Quote
  has_and_belongs_to_many :shipments, :foreign_key => :quote_id
end

另一个问题可能是因为您正在实例化一个 Quote 类,而您没有显示其定义。您似乎正在为 BuyQuote 类定义“发货”关系,但不是为父类 Quote。

也许尝试:

quote = BuyQuote.create
shipment = quote.shipments.new
于 2012-08-24T20:05:55.500 回答