Ruby循环遍历一个对象的某些属性

u19*_*964 0 ruby attributes metaprogramming ruby-on-rails

在Rails中,我有一个类名User,我只想看一下:name, :address, :age

我想写一段代码,如下所示:

user = User.new
[name, address, age].zip(["Name", "Address", 10]).each do |attribute, val|
  user.attribute = val
end
Run Code Online (Sandbox Code Playgroud)

事情是我不知道如何正确地做,因为user.attribute显然不是一个有效的线.换句话说,反正是有,这样user.attribute得到的评价user.name,user.address,user.age取决于环路?

谢谢

Ser*_*sev 5

你应该使用send方法

user.send "#{attribute}=", val
Run Code Online (Sandbox Code Playgroud)

如果属性是,:name那么,上面的行相当于

user.name = val
Run Code Online (Sandbox Code Playgroud)