rails has_one关联阻止添加新的子对象(如果存在)

时间:2016-07-01 12:08:06

标签: ruby-on-rails activerecord associations has-one

在我的rails应用中,我有user has_one :profileprofile belongs_to :user关联。如果用户已有个人资料并转到user/:user_id/profile/new页面并提交新的个人资料,则旧的个人资料会更新。

我可以使用pundit(授权gem)来防止这种情况,并且只授权没有配置文件的用户能够触发新的操作并创建操作。我想知道在这种情况下轨道惯例是什么。我想应该有一个更简单的解决方案。

1 个答案:

答案 0 :(得分:1)

这是rails惯例。当您在创建和更新时打开相同的表单时,如果profile.idnil表单操作将转到Profile#create,如果profile.id不是nil,它将会使用参数中的Profile#update转到profile.id操作。