В приложении модель страны содержит много городов, и есть два метода, которые выполняют действия над всеми городами.
class Country < ActiveRecord::Base
has_many :cities
def destroy_cities
self.cities.each do |city|
city.destroy
end
end
def update_cities(new_status)
self.cities.each do |city|
city.status = new_status
end
end
end
Интересно, существуют ли более простые способы написания этих методов, напримернесуществующие self.cities.destroy
и self.cities.status = new_status
С точки зрения эффективности он будет выполнять следующие SQL-запросы:
DELETE FROM cities WHERE country_id=#{country_id}
UPDATE cities SET status=#{new_status} WHERE country_id=#{country_id}
Вместо выполнения нескольких запросов:
SELECT * FROM cities WHERE country_id=#{country_id}
DELETE FROM cities WHERE id=#{city_ids[0]}
DELETE FROM cities WHERE id=#{city_ids[1]}
DELETE FROM cities WHERE id=#{city_ids[2]}
...