Rails 4在保存用户之前更新设计注册控制器中的字段

时间:2014-09-26 19:45:05

标签: ruby-on-rails ruby-on-rails-4 devise

我正在尝试生成一个随机字符串并将其保存到名为railsid的用户字段中。我已经为设计用户重写了registrations_controller.rb。我希望在创建对象时将这个随机生成的字符串保存到用户对象中。当我进入rails控制台以查看用户是否已保存railsid时,它将返回nil。

registrations_controller.rb

class Lenders::RegistrationsController < Devise::RegistrationsController
  before_filter :update_sanitized_params

  def new
    super
  end

  def create
    @user = User.new(params[:user])
    @user.railsid = '%010d' % rand(10 ** 10)
    super
  end

  def edit
    super
  end 

  def update
    super
  end

  def authenticate_scope!
    send(:"authenticate_user!", :force => true)
    self.resource = send(:"current_user")
  end

  private

    def update_sanitized_params
       devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:email, :password, :password_confirmation, :type, :confirmed_at, :first_name, :last_name, :railsid)}
    end

    def after_sign_up_path_for(resource)
      root_path
    end

end 

1 个答案:

答案 0 :(得分:0)

发布后不久,我尝试了update_attribute方法,它运行得很好。

def create
  super
  resource.update_attribute(:railsid, '%010d' % rand(10 ** 10))
end