1

Rails3.1.4アプリに請求書があります。請求書は、1つの見積もりまたは1つまたは複数のリース予約アイテムから生成できますが、両方から同時に生成することはできません。したがって、1つの請求書に1つの見積もりがあるか、多くのリース使用項目があります。ここで、請求書IDと人工フィールドinvoice_item_id(見積もりIDまたはリース使用アイテムIDのいずれか)を使用して中間テーブルを作成し、請求書の見積もりまたはリース使用アイテムを格納することを検討しています。ただし、請求書と見積もりの​​関係、および請求書とリースの使用項目の関係についてはわかりません。一部の請求書には見積もりがないため、請求書にhas_one見積もりを言うことはできません。一方、請求書has_manyのリース使用項目は、ない場合もあるため、言えません。Rails 3.1.4でこのタイプの関係を処理するためのより良い方法は何ですか?本当にありがとう。

4

2 に答える 2

1

ポリモーフィック アソシエーションをご覧ください:「ポリモーフィック アソシエーションでは、モデルは単一のアソシエーションで複数の他のモデルに属することができます」ので、あなたの場合invoce_item_idは請求可能 (見積もりまたはリース使用アイテム) に属します。

于 2012-05-20T17:13:25.047 に答える
1

上記のように、has_one/has_many 関係を使用しても問題ないはずです。参照が設定されていない場合でも、これらの関係を使用することは有効です。

ActiveRecord 検証を介して相互に排他的な部分を処理できます: http://guides.rubyonrails.org/active_record_validations_callbacks.html#validations-overview

class Invoice < ActiveRecord::Base

  has_one :quote 
  has_many :lease_usage_items

  validates :cannot_have_quote_and_lease_usage_items
于 2012-05-20T17:34:57.990 に答える