Ruby on rails 绑定对象中的参数(如果存在)
我在服务器上收到一个带有参数的API调用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
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行的末尾