2015-01-21 2 views
2

Я хотел бы использовать @value = SecureRandom.base64 (8), чтобы установить пароль, созданный при создании нового пользователя. Я не хочу, чтобы это произошло, когда я редактирую пользователя. Так что мой вопрос, где я могу использовать SecureRandom.base64 (8) в users_controller.rb или модели/user.rbСоздайте случайный пароль при создании нового пользователя с Rails

Это users_controller.rb

def create 
    if user.save 
     user.send_invitation 
     redirect_to root_url, notice: "Signed up!" 
    else 
     render :new 
    end 
    end 

    def destroy 
    @user = User.find(params[:id]) 

    if @user.destroy 
     redirect_to root_url, notice: "User was deleted successfully!" 
    end 
    end 

    def edit 
    respond_with(user) 
    end 

    def update 
    @user.password_confirmation = User.value 
    params[:user].delete(:password) if params[:user][:password].blank? 
    params[:user].delete(:password_confirmation) if params[:user][:password_confirmation].blank? 
    if user.save 
     redirect_to users_path, :notice => "Saved your updates!" 
    else 
     render :edit 
    end 
    end 
+0

Rails4? Вы можете использовать 'has_secure_password' в модели, если у вас есть атрибут' password_digest'. – radubogdan

ответ

2

Используйте before_create обратного вызова :

class User < ActiveRecord::Base 
    before_create :create_password 

    private 
    def create_password 
    self.password = SecureRandom.base64(8) 
    end 
end 
+1

Спасибо, что работает! – Raz

+0

Затем принял ответ :) – Rodrigo

Смежные вопросы