建模这些数据库关联的最佳方法是什么?

时间:2011-07-27 04:11:23

标签: ruby-on-rails ruby-on-rails-3 database-design activerecord

所以我有以下模型:

  • 用户
  • 商业
  • 优惠券
  • 优惠
  • 可赎回
  • 所有者

我使用所有者模型将各种其他模型(如商业优惠券交易和可兑换)与用户模型相关联。

使用可兑换模型是因为我想为每个使用优惠券/交易的用户生成唯一代码,以限制每个用户一个以及总金额。

我想也许我不需要两个模特的优惠券和交易,我只需要一个,因为交易更像是一种特殊类型的优惠券。

修改后继续使用模型:

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'

我只是不明白如何将优惠券与用户模型相关联,因为我为拥有的东西做了多态关联。

1 个答案:

答案 0 :(得分:3)

我会说优惠券本质上是合约,证书,交易实例。当一个人购买优惠券时,他们实际上会购买一份合法合同,某些企业将根据合同(交易)中描述的承诺产品或服务进行交易。因此,考虑到这一点,这是尝试对此进行建模。

enter image description here