Ruby on rails 绑定对象中的参数(如果存在)

Ruby on rails 绑定对象中的参数(如果存在),ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我在服务器上收到一个带有参数的API调用 first_name , :last_name , :age 等 我想将这些参数绑定到我的对象,用户对其拥有同名属性,就像我想在user[first\u name]、user[:last\u name] 这样我就可以按照下面的方式将完整的用户对象放入数据库 User.new(参数[:User])或User.new(一些散列) 我不想使用下面的 User.new(:first_name=>params[:first_name],:last_name

我在服务器上收到一个带有参数的API调用

first_name , :last_name , :age

我想将这些参数绑定到我的对象,用户对其拥有同名属性,就像我想在
user[first\u name]、user[:last\u name]

这样我就可以按照下面的方式将完整的用户对象放入数据库

User.new(参数[:User])
User.new(一些散列)

我不想使用下面的

User.new(:first_name=>params[:first_name],:last_name=>params[:last_name]) 

提前感谢您的帮助:)

类似的方法可能会奏效:

user = User.new
params.each do |key,value|
  user[key] = value if user.attribute_names.include?(key.to_s)
end

但是,请注意,在这种情况下,您应该使用
attr\u protected
attr\u accessible
来保护
用户
模型的敏感属性。

将该功能写入
用户。初始化
可以解决以下问题:

def initialize(args={})
  args.each_with_key do |key,val|
    instance_variable_set("@#{key}", val)
  end
end
这当然没有验证,也不能保护您的对象不受坏数据的影响。例如,如果要确保只设置有效的可访问属性,请添加
if respond\u to?键
至第3行的末尾