如何在 rails 强参数中添加默认数据?
How do i add default data in rails strong params?
假设我想在管理员中创建用户时为用户生成并设置默认密码。
我想做这样的事情,
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password=> @default_generated_password, :password_confirmation => @default_generated_password)
end
我正在使用魔法进行用户身份验证。
我觉得这是完全错误的方式,但我该怎么做?
之后合并它们
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
您想使用reverse_merge
(出现在rails 5.1)或with_defaults
(别名出现在rails 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
假设我想在管理员中创建用户时为用户生成并设置默认密码。
我想做这样的事情,
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password=> @default_generated_password, :password_confirmation => @default_generated_password)
end
我正在使用魔法进行用户身份验证。 我觉得这是完全错误的方式,但我该怎么做?
之后合并它们
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
您想使用reverse_merge
(出现在rails 5.1)或with_defaults
(别名出现在rails 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