[英]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.name
, user.address
, user.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.