Ruby 一次更改数组的所有项
我想知道是否有一种方法可以避免遍历列表中的所有项来访问同一个属性Ruby 一次更改数组的所有项,ruby,arrays,ruby-on-rails-3,performance,postgresql,Ruby,Arrays,Ruby On Rails 3,Performance,Postgresql,我想知道是否有一种方法可以避免遍历列表中的所有项来访问同一个属性 people = [John, Bob, Dave, Eric] 每个都有一个数字属性(即John.num) 因此,与其使用people.map{| person | person.num=10} 我可能会做人。[…一些魔术..].num=10 在所有的地方循环似乎都是浪费。。如果用户是ActiveRecord模型,则可以使用SQL或类似的方法 如果人员是ActiveRecord模型,则可以使用 我的情况是一个非AR对象,你可以
people = [John, Bob, Dave, Eric]
每个都有一个数字属性(即John.num
)
因此,与其使用people.map{| person | person.num=10}
我可能会做人。[…一些魔术..].num=10
在所有的地方循环似乎都是浪费。。如果用户是ActiveRecord模型,则可以使用SQL或类似的方法
如果人员是ActiveRecord模型,则可以使用
我的情况是一个非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
我的情况是一个非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
此方法的第二个参数描述了如何选择记录的条件。这样:
Person.update_all(“num=10”,“age>20”)
此方法的第二个参数描述了如何选择记录的条件。这样:Person.update\u all(“num=10”,“age>20”)