美好的一天!
编辑以便更好地理解。
第一个模型是库存,在此模型中,我有Product_Type,Product_Name和User_ID。
第二个模型我有用户,包括First_Name,Last_Name和Pin_Number。
在我的库存页面上,我有一个表单,用于检出所说的Product_Type和Product_Name,也是用户放置其Pin_Number的地方。在提交时,它将检查他们输入的Pin_Number并在Users模型中验证它如果Pin_Number正确,它将创建一个包含所述Product_Type,Product_Name和User_ID的条目(从提交的Pin_Number中提取。)
我只想弄清楚如何验证他们提交的Pin_Number。
这就是为什么我认为我必须做某种验证和基于该验证的if语句。不确定如何去做。
我希望这可以解决任何困惑。
答案 0 :(得分:1)
我只想弄清楚如何验证他们提交的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
模型中,你可能想做类似的事情(我道歉,我还没有在Rails 5上,所以一些语法可能不正确):
class Inventory < ActiveRecord::Base
validates :user_id,
:product_type,
:product_name,
presence: true
belongs_to :user
end
你可能还想考虑在User.pin_number
上添加一个索引,如果你要通过它做很多的发现。
答案 1 :(得分:0)
不确定我的问题是否正确,但听起来像是我的自定义验证器。
您可以在&#34; Custom Validators&#34;
下的官方Rails文档中了解有关自定义验证器的更多信息另外,考虑将您构建的自定义验证程序的类移动到关注点,这是使其可重用的好方法。您可以在this StackOverflow question和this nice tutorial找到更多信息。