У меня есть модель Company
, у которой есть lending_restricted:boolean
column. Список об ограничении производится методом restricted_codes
.Как эффективно обновлять несколько экземпляров в Rails
И обновить только необходимые компании, я написал так:
old_codes = Company.where(lending_restricted: true).pluck(:code)
new_codes = restricted_codes
(new_codes - old_codes).each do |code|
c = Company.find_by(code: code)
c.try(:update_attributes, lending_restricted: true)
end
(old_codes - new_codes).each do |code|
c = Company.find_by(code: code)
c.try(:update_attributes, lending_restricted: false)
end
Он работает в основном хорошо, но я чувствую, что это немного излишним писать подобную функцию два раза. Есть ли лучший способ написать такой метод?
Число restricted_codes
составляет около 100, и в моем проекте Rails работает около 4000 компаний.