我有一個控制器訂單。該控制器根據POST請求執行不同的操作。 當用戶購買產品時,它會轉到他的庫存。所以只有庫存的產品纔可以銷售。庫存表有一個product_id列。簡單地說,當一個用戶在產品/ product_id頁面上的訂單必須是買入的時候,在stock/stock_id頁面上的訂單必須是賣出的。Ruby on Rails:If Else based on params [:example]
的routes.rb:
resources :products, only: [:index, :show] do
resources :orders, only: [:create]
end
resources :stocks, only: [:index, :show] do
resources :orders, only: [:create]
end
耙路線:
products_orders POST /products/:product_id/orders(.:format) orders#create
products_index GET /products(.:format) products#index
product GET /products/:id(.:format) products#show
stocks_orders POST /stocks/:stock_id/orders(.:format) orders#create
stocks_index GET /stocks(.:format) stocks#index
stock GET /stock/:id(.:format) stocks#show
我的模型:
class Order < ApplicationRecord
belongs_to :product
end
class Product < ApplicationRecord
has_many :orders
has_many :stocks
end
class Stock < ApplicationRecord
belongs_to :product
end
所以我這樣做:
class OrdersController < ApplicationController
def create
if params[:product_id].present?
order.type = 'buy'
elsif params[:stock_id].present?
order.type = 'sell'
end
end
end
該代碼是否可靠?有辦法做得更好嗎? 基於params [:product_id]和params [:stock_id]使用此代碼是否正確?
if params[:product_id].present?
order.type = 'buy'
elsif params[:stock_id].present?
order.type = 'sell'
end
可能以某種方式注入的請求PARAMS? 例如將params [:product_id]注入stoks/stock_id/orders會造成一些損害?以捲曲爲例。 非常感謝。
重複的https://stackoverflow.com/questions/46993664/rails-create-action-with-if-else-based-on-paramsexample?rq=1問問你好! –