如果您想在创建邀请时创建 slug:
我遇到了同样的问题。
我用来邀请用户的命令:
User.invite!(email: "example@email.com", name: "John John")
问题是由于某种原因should_generate_new_friendly_id?
在这个过程中没有调用。
我的解决方案是编写一种方法来创建用户 slug
def slug_me!
new_slug = [name.parameterize].join("-")
if User.where(slug: new_slug).present? #check if the is a user with that slug already
new_slug = [name.parameterize, User.last.id+1].join("-")
end
update_column(:slug, new_slug)
end
(在我的应用程序中,new_slag 将是独一无二的。不确定您的应用程序。您可能需要更改[name.parameterize, User.last.id+1].join("-")
为适合您需要的其他内容)
并覆盖invite!
设计使用的方法:
def invite!
super
slug_me! if should_generate_new_friendly_id?
end
(我已经添加了if should_generate_new_friendly_id?
,所以如果您多次邀请同一个人,它就不会产生蛞蝓)
在这种情况下should_generate_new_friendly_id?
会返回,true
因为slug
会返回nil
slug.blank?
true
它可能不是最好的解决方案,但它对我有用。(我仍在寻找更好的解决方案)