Ruby on rails 使用强参数向实例添加属性
此功能的主要示例是在创建用户时。您不想将“password”保存到数据库,而是想获取实例的密码并从中创建密码散列和密码盐 所以,如果我正在创建一个可以创建用户的表单,如果没有“password”属性,我怎么能有一个password字段呢 我以前认为这可以通过在用户模型中使用attr_accessor来解决,但我不知道如何使用强参数:Ruby on rails 使用强参数向实例添加属性,ruby-on-rails,Ruby On Rails,此功能的主要示例是在创建用户时。您不想将“password”保存到数据库,而是想获取实例的密码并从中创建密码散列和密码盐 所以,如果我正在创建一个可以创建用户的表单,如果没有“password”属性,我怎么能有一个password字段呢 我以前认为这可以通过在用户模型中使用attr_accessor来解决,但我不知道如何使用强参数: def user_params params.require(:user).permit(:username, :email, :password, :pa
def user_params
params.require(:user).permit(:username, :email, :password, :password_confirmation)
end
尝试通过用户参数创建新实例时,只会导致UnknownAttributes错误:
@user = User.new(user_params)
如果要添加到强参数,可以使用以下方法 或者,如果希望在保存时操作数据,则可能会使用,即在创建之前:
它应该是User.newparams[:User]或User.newparams对吗?@shiva,对于Rails 4.0+,您需要使用强参数这里的语法是正确的好的,我刚刚引用了这个文档
private
def user_params
params.require(:user).permit(:x, :y, :z).merge(hair_color: "brown")
end
#app/models/user.rb
Class User < ActiveRecord::Base
before_create :hash_password
private
def hash_password
if password #-> == self.password
#hash the password
#runs after validations
#runs just before DB insert
end
end
end