Ruby on rails 使用强参数向实例添加属性

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

此功能的主要示例是在创建用户时。您不想将“password”保存到数据库,而是想获取实例的密码并从中创建密码散列和密码盐

所以,如果我正在创建一个可以创建用户的表单,如果没有“password”属性,我怎么能有一个password字段呢

我以前认为这可以通过在用户模型中使用attr_accessor来解决,但我不知道如何使用强参数:

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