ActiveAdmin 不保存不是来自参数的属性
ActiveAdmin does not save attributes not coming from params
在创建活动管理员记录时,我正在尝试保存并非来自参数的属性 (role_type)。
但是,属性不会在创建时保存。
我已将其添加到 permit_params。
permit_params :email, :password, :password_confirmation, :phone_no, :name, :role_type, role_ids: []
controller do
def create
user = User.create(name: params[:user][:name], email: params[:user][:email], password: SecureRandom.hex, role_type: "employee")
flash[:notice] = "User Created"
redirect_to admin_user_path(user)
end
end
如果你想将参数散列与你手动分配的一些属性结合起来,最干净的方法是使用块
permit_params :email, :password, :password_confirmation, :phone_no, :name, :role_type, role_ids: []
controller do
def create
user = User.create(permitted_params[:user]) do |u|
u.password = SecureRandom.hex
end
flash[:notice] = "User Created"
redirect_to admin_user_path(user)
end
end
但是您的密码加密方案非常幼稚 - 我建议您使用 ActiveModel::SecurePassword
而不是尝试重新发明密码加密轮并创建不安全的身份验证系统。
另一个主要问题是您实际上并没有检查用户是否已创建!
permit_params :email, :password, :password_confirmation, :phone_no, :name, :role_type, role_ids: []
controller do
def create
user = User.new(permitted_params[:user]) do |u|
u.password = SecureRandom.hex
end
if user.save
flash[:notice] = "User Created"
redirect_to admin_user_path(user)
else
render :new
end
end
end
在创建活动管理员记录时,我正在尝试保存并非来自参数的属性 (role_type)。
但是,属性不会在创建时保存。 我已将其添加到 permit_params。
permit_params :email, :password, :password_confirmation, :phone_no, :name, :role_type, role_ids: []
controller do
def create
user = User.create(name: params[:user][:name], email: params[:user][:email], password: SecureRandom.hex, role_type: "employee")
flash[:notice] = "User Created"
redirect_to admin_user_path(user)
end
end
如果你想将参数散列与你手动分配的一些属性结合起来,最干净的方法是使用块
permit_params :email, :password, :password_confirmation, :phone_no, :name, :role_type, role_ids: []
controller do
def create
user = User.create(permitted_params[:user]) do |u|
u.password = SecureRandom.hex
end
flash[:notice] = "User Created"
redirect_to admin_user_path(user)
end
end
但是您的密码加密方案非常幼稚 - 我建议您使用 ActiveModel::SecurePassword
而不是尝试重新发明密码加密轮并创建不安全的身份验证系统。
另一个主要问题是您实际上并没有检查用户是否已创建!
permit_params :email, :password, :password_confirmation, :phone_no, :name, :role_type, role_ids: []
controller do
def create
user = User.new(permitted_params[:user]) do |u|
u.password = SecureRandom.hex
end
if user.save
flash[:notice] = "User Created"
redirect_to admin_user_path(user)
else
render :new
end
end
end