1

だから私持って次のモデル:これらのデータベースの関連付けをモデル化する最良の方法は何ですか?

  • ユーザー
  • ビジネス
  • クーポン
  • 償還
  • お得な情報
  • 所有者

私は関連付けることを所有者のモデルを使用していますビジネスクーポンなど様々な他のモデルユーザーモデルに戻すことができます。

クーポン/取引を使用するユーザーごとに一人のユーザー数と合計金額を制限する固有のコードを生成する必要があるため、償還可能なモデルが使用されます。

私は、クーポンと取引に2つのモデルは必要ないかもしれないと思います。取引は特別なクーポンのようなものだからです。

だから、HERESに改正後のモデル:

Business 
    has_many :owners, :as => :ownable, :dependent => :destroy 
    has_many :coupons, :dependent => :destroy 

Coupon 
    belongs_to :business 
    has_many :redeems 
    # also has a special column for denoting weather it's a 
    # normal coupon or a daily deal kind of coupon 

Redeem 
    belongs_to :coupon 
    has_one :owner, :as => :ownable, :dependent => :destroy 

Owner 
    belongs_to :user 
    belongs_to :ownable, :polymorphic => true 

とユーザモデルのために私は完全に を失ったが、ここで私はちょうど同じ問題を抱えていることがすべての人のための擬似コード 編集で何をしたいのです午前ここです私はユーザモデル

User 
    has_many :owners 
    has_many :businesses, :through => :owners, 
       :source => business, :source_type => 'Business' 
    has_many :redeems, :through => :owners, :source=> :redeem, 
       :source_type => 'Redeem' 

    has_many :coupons, :through => :redeems, 
       :source => :coupon, :source_type => 'Coupon' 

を設定する方法私はちょうど私が物事を所有するためのポリモーフィックな関連をしたので、Userモデルでクーポンを関連付ける方法を理解していません。

+0

オブジェクトまたは表の列のプロパティとしてそれを置くであろうと、形容詞です。動詞(償還)として、それは連合によって表されるでしょう。エンティティ(オブジェクト)として持っているので、何かがここから離れています。おそらく、モデル化しようとしているプロセスを記述することができますか? –

答えて

3

私は、クーポンは本質的に契約、証明書、取引のインスタンスであると言います。ある人がクーポンを購入すると、実際には、契約(契約)に記載されている約束された製品またはサービスで提供される法的契約を購入します。そのことを念頭に置いて、これをモデル化する試みがここにあります。その償還を考慮

enter image description here

+0

wowこの図を作成するために何を使用したのですか?とにかく私は、すべてが何を意味するのか、私の説明では正確ではないと思います。申し訳ありません。お得な情報とクーポンは、さまざまな種類のスペシャルオファーを提供することを目的としていました。取引は、副詞よりもむしろクーポンのインスタンスに似ています。取引は有効期限があり、それまでに償還されなければなりませんが、限られた期間だけ取引を受け入れて支払いを行うことができます。だから、取引は基本的に日々の取引のようなものです。クーポンは数ヶ月間印刷される可能性があります。これを主な質問に追加します。 – Tyler

+0

また、あなたはそれをモデル化したやり方から、特定のモデルの所有者が誰であるかを知るために多相関連を行うべきではないと思いますか? @タイラーライス; – Tyler

+0

;ほとんどのORMでは、これは単純な 'table per class'マッピングを使って行うことができます。 –