1

所以我有以下型號:模擬這些數據庫關聯的最佳方式是什麼?

  • 用戶
  • 業務
  • 優惠
  • 贖回
  • 所有者

我現在用的是所有者模型關聯各種其他模式,如商業優惠券交易s並且可兌​​換成用戶模型。

使用可兌換模型是因爲我想爲每個使用優惠券/交易的用戶生成一個唯一的代碼,以限制每個用戶一個以及總額。

我想也許我不需要兩種模式的優惠券和交易,我只需要一個,因爲交易更像是一種特殊類型的優惠券。

因此,繼承人修訂後的機型:

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' 

我只是不知道如何,因爲我做的東西擁有一個多態關聯的優惠券與用戶模型相關聯。

+0

考慮到兌換是一個形容詞,這將把它作爲一個對象的屬性或一個表的一列。作爲動詞(贖回)它將由一個關聯表示。你有它作爲一個實體(對象),所以有些東西在這裏。也許你可以描述你想要建模的過程? –

回答

3

我會說,優惠券本質上是一個合同,一個證書,一個交易的實例。當一個人購買一張優惠券時,他們實際上會購買一份合同,以便某些企業按合同中所述的承諾產品或服務交易(交易)。因此,考慮到這一點,我們嘗試對此進行建模。

enter image description here

+0

非常感謝你用什麼來創建這個圖表?無論如何,我不認爲我在解釋所有事情的意義上都是準確的,我很抱歉。交易和優惠券旨在提供不同種類的特別優惠。交易更像是優惠券的一個例子,而不是反之。交易有到期日期,並且必須在那之前兌換,但只能接受並在有限的時間內支付交易。所以一筆交易基本上就像是每日交易。而優惠券可能要打印幾個月。我將把這添加到主要問題中。 – Tyler

+0

另外從你建模的方式來看,我想我不應該做一個多態關聯來查看某個模型的所有者是誰? – Tyler

+0

@Tyler Rice;對於大多數ORM,這可以使用簡單的'table per class'映射完成。 –

相關問題