这是我的模特用户
class User < ApplicationRecord
extend FriendlyId
friendly_id :name
end
用户名不是uniq。
我想要这样的网址:
http://localhost:3000/users/myname
这是我的控制者:
class UsersController < ApplicationController
before_action :set_user
def set_user
@user = User.friendly.find(params[:id])
end
end
URL显示正常,只是我想要的方式,但问题是当我尝试删除用户时,控制台服务器显示&#34;回滚&#34;我注意到这是因为有两个或更多用户具有相同的名称,因此它可以删除用户。 所以我现在的问题是我已经实现了gem friendly_id,它是按名称搜索和set_user,但是我想通过ID设置set_admin,所以我可以通过id删除(这样,如果有许多同名的用户,这并不重要)。我的其他模型也重复了这个问题。
如何避免这种行为,我需要通过id设置模型,但要显示名称或加密url中的id。你推荐我其他宝石或我应该如何正确实施。 (不是将名称设置为uniq的选项)。感谢
答案 0 :(得分:0)
根据我的理解, 友好ID使用db级别的唯一性验证
如果您已拥有同名用户,则应删除这些条目。 (这与我们尝试将唯一索引放入db中已存在相同条目值的列的条件非常相似)
然后安装friendly_id gem,并进行输入。我确信gem创建的slu不会重复,所以每条记录都是唯一的,你可以使用id Too删除记录