如何在rails强参数中添加默认数据?

时间:2016-04-12 19:48:48

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

让我们说,如果我想在admin中创建并为用户设置默认密码。

我想做这样的事情,

 def user_params
    params.require(:user).permit(:first_name, :last_name, :email, :password=> @default_generated_password, :password_confirmation => @default_generated_password)
end

我正在使用巫术进行用户身份验证。 我感觉这是完全错误的方式,但我该怎么做?

2 个答案:

答案 0 :(得分:2)

之后合并它们
params
 .require(:user)
 .permit(:first_name, :last_name)
 .merge(password: @default_generated_password, password_confirmation: @default_generated_password)

或者如果您只需要一个动作(例如创建)

def create
  # password generation code...
  # ...

  @user = User.new(user_params.merge(password: @default_generated_password, password_confirmation: @default_generated_password))

  if @user.save
   redirect_to ...
  else
   flash[:error] = "Did not save"
   render :new
  end
end

private 

def user_params
  params.require(:user).permit(:first_name, :last_name)
end

答案 1 :(得分:1)

您要使用reverse_merge(出现在导轨5.1中)或with_defaults(别名出现在导轨5.2中)

def user_params
  params
      .require(:user)
      .permit(:first_name, :last_name, :email, :password, :password_confirmation)
      .with_defaults(password: @default_generated_password, password_confirmation: @default_generated_password)
end