我创建了一个像ebay这样的网站,用户可以在其上销售他们的产品。它有如下模型:
User
有很多Product
。Product
有很多Product_packing_type
。 Product_packing_type
用于描述客户可以购买的包装类型。例如,顾客可以购买1升牛奶包装或3升牛奶包装。Product
包含name
,description
等列。我使用嵌套属性来编辑产品;换句话说,用户可以同时修改Product
和Product_packing_type
。
当用户更新其产品时,服务器会通过产品中的user_id
检查产品是否属于用户。但服务器不会检查product_packing_type_id
是否属于产品。
某些不良用户是否可能使用属于他自己的product_id
但是不属于该产品的嵌套属性product_packing_type_id
来修改其他产品的包装?
update
功能:
@product.update(product_params)
def product_params
params.require(:product).permit(:name, :description, product_packing_types_attributes:[:id, :quantity, :size] )
end
答案 0 :(得分:0)
来自accepts_nested_attributes_for文件:
如果哈希包含与已关联记录匹配的id密钥,则将修改匹配记录。
在您的代码中,product_params
已允许product_packing_type的id属性,因此它将更新product_packing_type内容。
顺便说一句,如果您不允许嵌套的id属性,它将在更新产品时始终创建一个新的product_packing_type对象。