1

次のクラスは、単一テーブルの継承を使用した Quote のサブクラスです。

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

new標準の ActiveRecordメソッドを使用して出荷を作成したいと考えています。

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 に答える