Rails电子商务关系

时间:2018-07-20 09:02:04

标签: sql ruby-on-rails ruby relational

嘿,所以我要为电子商务网站建立后端

目前,我已经建立了基本模型,但是遇到关系问题

class Item < ApplicationRecord
  belongs_to :shop
  has_many :transaction_items
  has_many :transactions, through: :transaction_items
  has_many :users, through: :transactions
end


class Shop < ApplicationRecord
  has_many :items
  has_many :transactions, through: :items
  has_many :user_shops
  has_many :users, through: :user_shops
end

class TransactionItem < ApplicationRecord
  belongs_to :item
  belongs_to :transaction
end

class Transaction < ApplicationRecord
  belongs_to :user
  belongs_to :shop, optional: true
  has_many :transaction_items
  has_many :items, through: :transaction_items
end

class UserShop < ApplicationRecord
  belongs_to :shop
  belongs_to :user
end

class User < ApplicationRecord
  has_many :transactions
  has_many :items, through: :transactions
  has_many :user_shops
  has_many :shops, through: :user_shops
  has_secure_password

  validates :username, uniqueness: true
  validates :username, presence: true
end

故事: 用户注册并定向到主页 用户单击商店,并被定向到商店页面 用户从商店页面选择商品并添加到购物车 用户进行交易并为购物车中的所有商品支付总价 每个购物车对于该商店页面都是唯一的(不能将来自不同商店的商品合并到一个购物车中)

所以我希望用户通过交易获得许多物品(用户在结帐时进行交易后获得物品)

但是我应该使用通过交易拥有许多用户的项目还是应该拥有许多用户的项目?由于交易仅属于用户,因此对该决定感到困惑

或完全替代的方法

我应该创建一个新的联接模型user_items(联接表),该模型与用户和诸如user_items之类的项目之间的事务无关,还是当前的设置更好?由于用户只有在进行交易时才能拥有物品

我希望开始时减少模型数量,以免事情变得太复杂,但是我的交易模型已经使我有些困惑

我感谢您的任何帮助或建议!兴奋地超过了这个阶段,所以我可以开始构建。

0 个答案:

没有答案