Rails和Devise-如何使用户名迁移成为唯一的,如果不是,则显示错误?

时间:2015-02-10 11:42:23

标签: ruby-on-rails ruby model devise rails-migrations

我正在使用设计我的rails应用程序。我想添加用户名字段,因此我添加了迁移到数据库。 现在我想要设计验证user_name字段的唯一性,但我无法弄清楚如何做到这一点。 我还希望它显示错误,就像它对默认电子邮件字段一样。

2 个答案:

答案 0 :(得分:1)

只需在user_name模型中添加User验证

即可
validates :user_name, uniqueness: true

答案 1 :(得分:0)

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  before_action :configure_permitted_parameters, if: :devise_controller?



  protected  

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation, :remember_me) }
  end



end

用户模型代码更改 - 添加验证

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  validates :username , uniqueness: {case_sesitive: false}

end