0

リストのすべての項目をループして同じ属性にアクセスするのを避ける方法があるのだろうか。

people = [John, Bob, Dave, Eric]

それぞれに数値属性があります (つまりJohn.num)

だから代わりにpeople.map{|person| person.num =10}

私はするかもしれませんpeople.[...some magic..].num = 10

すべてをループするのは無駄に思えます..おそらくSQLまたは同様のものを使用して

4

2 に答える 2

3

people が ActiveRecord モデルの場合、update_allメソッドを使用できます

Person.update_all("num=10")
于 2012-11-29T12:55:16.353 に答える
0

私は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
于 2012-11-29T13:08:43.890 に答える