Каков наилучший способ моделирования этих ассоциаций баз данных? - PullRequest
1 голос
/ 27 июля 2011

Итак, у меня есть следующие модели:

  • Пользователь
  • Бизнес
  • Купоны
  • Сделки
  • Погашаемые
  • владелец

Я использую модель владельца, чтобы связать различные другие модели, такие как сделки с бизнес-купонами, и возможность их погашения для пользовательской модели.

Модель, подлежащая погашению, используется потому, что яЯ хочу создать уникальный код для каждого пользователя, который использует купон / сделку, чтобы ограничить один код на пользователя, а также сумму в целом.

Полагаю, может быть, мне не нужны две модели для купона и сделкии мне просто нужен один, потому что сделка больше похожа на специальный тип купона.

Итак, вот модели после ревизии:

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 Ответ

3 голосов
/ 27 июля 2011

Я бы сказал, что купон - это, по сути, контракт, сертификат, экземпляр сделки.Когда человек покупает купон, он фактически покупает юридический контракт, который какой-либо бизнес поставит на обещанный продукт или услугу, описанную в контракте (сделке).Итак, имея в виду, вот попытка смоделировать это.

enter image description here

...