簡體   English   中英

Ruby 循環遍歷對象的某些屬性

[英]Ruby Loop through some attributes of an object

在 Rails 中,我有一個類名User ,我只想在其中查看:name, :address, :age

我想寫一段代碼是這樣的:

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

問題是我不知道如何正確地做到這一點,因為user.attribute顯然不是有效的行。 換句話說,無論如何,是否有user.attribute被評估為user.nameuser.addressuser.age取決於循環?

你應該使用send方法

user.send "#{attribute}=", val

如果屬性是,比方說, :name ,那么上面的行相當於

user.name = val

其實我可以這樣做:

[name, address, age].zip(["Name", "Address", 10]).each do |attribute, val|
    user[attribute] = val
end

這個方法也行

user.send(:name)與調用user.name相同,因此您可能想嘗試一下。

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

但這就是我要寫的:

user = User.new
user.attributes = {name => "Name", address => "Address", age => 10}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM