Rails Wicked Form:阻止其他人更改对象值

Rails Wicked Form: Stop others changing object values

当创建像 here 这样的带有部分验证的对象时,Wicked 需要 url -

中的对象 ID
http://localhost:3000/pets/1/steps/identity

这是否意味着任何人都可以输入此路由并修改数据?

我需要任何人(未登录)填写表格,但我不希望第三方可以访问另一个用户对象。

我只需要创建一个简单的多步骤表单,如 here,它允许标准的后退和前进按钮功能。

感谢您的帮助!

要解决这个问题,您需要进行某种授权检查。邪恶的形式 gem 不处理这些东西。

尝试CanCanCan。它非常可靠,代码也很干净。自述文件很容易理解,并向您展示了如何为每个控制器操作添加一个检查,只允许您选择编辑的人。

在您的情况下,您需要在 Ability class 中包含以下内容:

can [:new, :create], Pet
can [:edit, :update], Pet, user: user

显示任何人都可以制作新宠物,但只有当宠物是您的宠物时,您才能加载并提交编辑表单。