我只是想弄清楚如何验证他们提交的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