我有一个控制器订单。该控制器根据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问问你好! –