如何为 Devise 的用户名添加 slug?

How to add a slug to username for Devise?

通常,我会这样创建 slug:

params[:user][:name_slug] = params[:user][:name].parameterize

但这对于 Devise 来说是一个很大的问题 - 我该如何添加它? 我已经创建了一个控制器,我在其中指定了创建用户所需的属性,但是如何在其中添加 slug?

class RegistrationsController < Devise::RegistrationsController

  private
    def sign_up_params
      params.require(:user).permit(:name, :name_slug, :email, :password, :password_confirmation)
    end

  protected
    def update_resource(resource, params)
      resource.update_without_password(params)
    end
end

提前致谢。

你可以在你的 User 模型中做到这一点:

before_validation :generate_slug

# ...

private
def generate_slug
  self.name_slug = name.to_s.parameterize
end