我的用户模型中有此代码
class User < ActiveRecord::Base
after_create :set_user_full_name
.........
private
def set_user_full_name
self.name = "Test name"
end
end
但是当我创建用户时,name属性为nil。我尝试将名称添加到
创建并更新强大的参数,但没有运气。
devise_parameter_sanitizer.for(:sign_up) << [:name]
devise_parameter_sanitizer.for(:account_update) << [:name]
任何帮助将不胜感激!
答案 0 :(得分:2)
after_create
回调。
在您的代码中,实际上并未插入name
。
user = User.create(some_attiributes)
user.name #=> "Test name"
user.reload
user.name #=> nil
如果要插入名称属性,请使用before_create
回调
它在插入
<强>更新强>
如果用户具有first_name
和last_name
属性,
before_create :set_user_full_name
def set_user_full_name
self.name = "#{first_name} #{last_name}"
end
但是如果用户没有first_name
和last_name
属性,则应该在控制器中处理。
class Users::RegistrationsController < Devise::RegistrationsController
before_filter :set_name_param, only: [:create]
private
def set_name_param
params[:user][:name] = "#{params[:user][:first_name]} #{params[:user][:last_name]}"
end
end