リストのすべての項目をループして同じ属性にアクセスするのを避ける方法があるのだろうか。
people = [John, Bob, Dave, Eric]
それぞれに数値属性があります (つまりJohn.num
)
だから代わりにpeople.map{|person| person.num =10}
私はするかもしれませんpeople.[...some magic..].num = 10
すべてをループするのは無駄に思えます..おそらくSQLまたは同様のものを使用して
リストのすべての項目をループして同じ属性にアクセスするのを避ける方法があるのだろうか。
people = [John, Bob, Dave, Eric]
それぞれに数値属性があります (つまりJohn.num
)
だから代わりにpeople.map{|person| person.num =10}
私はするかもしれませんpeople.[...some magic..].num = 10
すべてをループするのは無駄に思えます..おそらくSQLまたは同様のものを使用して
people が ActiveRecord モデルの場合、update_allメソッドを使用できます
Person.update_all("num=10")
私はARオブジェクトではありません。パッチを適用した配列をモンキーすることはできますが、それは恐ろしい方法だと思います...そうしないことをお勧めします!!
class Person
def num=(value)
@num = value
end
def num
@num
end
end
class Array
def num value = 10
self.each do |element|
element.__send__(:num=, 10) if element && element.respond_to?(:num)
end
end
end
begin
john = Person.new
bob = Person.new
[john, bob].num
puts "john.num => #{john.num}"
end