当用户购买产品时,它会转到他的库存。因此,只有库存产品才能销售。库存表有一个product_id列。简单来说,当用户在产品/ product_id页面上订单必须是买入时,在库存/ stock_id页面订单时必须卖出。
我想只使用一个表订单,而不是创建两个表buy_order和sell_order。
所以我创建了buy_order和sell_order模型,没有迁移,显然继承了Order模型,控制器sell_orders和buy_orders。
我只是想知道这是否是一种正确使用一个表的方法。
我的模特:
class Order < ApplicationRecord
belongs_to :product
end
class BuyOrder < Order
end
class SellOrder < Order
end
class Product < ApplicationRecord
has_many :buy_orders
has_many :sell_orders
has_many :stocks
end
class Stock < ApplicationRecord
belongs_to :product
end
我的控制器
class BuyOrdersController < ApplicationController
def create
...
order.type = 'buy'
...
end
end
class SellOrdersController < ApplicationController
def create
...
order.type = 'sell'
...
end
end
routes.rb中:
resources :products, only: [:index, :show] do
resources :buy_orders, only: [:create]
end
resources :stocks, only: [:index, :show] do
resources :sell_orders, only: [:create]
end
Rake Routes:
products_orders POST /products/:product_id/buy_orders(.:format) orders#create
products_index GET /products(.:format) products#index
product GET /products/:id(.:format) products#show
stocks_orders POST /stocks/:stock_id/sell_orders(.:format) orders#create
stocks_index GET /stocks(.:format) stocks#index
stock GET /stock/:id(.:format) stocks#show
答案 0 :(得分:1)
我无法看到将您的&#34; order&#34;分开的用法。模型分为两个不同的模型。就个人而言,我选择了简单。在您的订单表中,属性side
可以是sell
或buy
。 product
会有很多orders
,每个product
属于class Product < ApplicationRecord
has_many :orders
has_many :stocks
end
。
Product.first.orders.where(side: 'sell')
然后您可以轻松地参考像:
这样的一面sell
将检索第一条产品记录的所有{{1}}订单。