我只是想弄清楚如何驗證他們提交的Pin_Number。
什麼構成有效pin_number
?只要它能讓你成功查找User
?如果用戶輸入另一個用戶的pin_number
會怎麼樣?這被認爲是「有效的」?有些事情需要考慮...
如果你想在你的問題中加入你提交的params
表單,它會有幫助。但是,我們可以做一些猜測工作。
所以,讓我們假設PARAMS看起來像:
{..., "inventory"=>{"product_type"=>"foo", "product_name"=>"Bar"}, "pin_number"=>5, ...}
在你的控制器,你可能會做這樣的事情:
if @user = User.find_by(pin_number: params[:pin_number])
@inventory = Inventory.new(inventory_params)
@inventory.user = @user
if @inventory.valid?
@inventory.save
# perhaps do some other stuff...
else
# handle the case where the `@inventory` is not valid
end
else
# handle the case where the `@user` was not found
end
這裏假設你有這樣的:
private
def inventory_params
params.require(:inventory).permit(:product_type, :product_name)
end
在您的Inventory
模型中,您可能想要做些喜歡的事情E(我很抱歉,我不是on Rails的5呢,所以一些語法可能不正確):
class Inventory < ActiveRecord::Base
validates :user_id,
:product_type,
:product_name,
presence: true
belongs_to :user
end
你可能還需要考慮在User.pin_number
添加索引,如果你打算做很多發現它。
看起來你需要'before_validation'回調。 –
你有會話控制器,以便你知道'current_user'嗎?用戶每次輸入密碼時,用戶是否在每次想要創建產品時都輸入密碼? – DRSE