Вопрос об update_all в Ruby - PullRequest
       0

Вопрос об update_all в Ruby

0 голосов
/ 01 июля 2010

Я создал массив, используя этот оператор ..

users_who_promoted = @organization.card_signups.select {|c| c.credit_status == true }

но когда я делаю это:

users_who_promoted.update_all("credit_status = false")

Я получаю большую ошибку:

NoMethodError: undefined method `update_all' for #<Array:0x32377bc>
from (irb):25

Почему это?

Ответы [ 2 ]

1 голос
/ 01 июля 2010

Aha!Это похоже на работу ..

unless @organization.card_signups.empty?
  @organization.card_signups.update_all("credit_status = false")
end
1 голос
/ 01 июля 2010

Вы вызываете update_all для массива экземпляров ActiveRecord, когда это фактически статический метод.

Вместо этого ваш вызов должен быть User.update_all (или CardSignup, или как называется ваш класс), затем обновление, затем условия.

См .: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001787

РЕДАКТИРУЙТЕ из-за отсутствия ясности: наличие этого массива значений полезно только в том случае, если оно позволяет создать условие для передачи в update_all в форме «id IN (# {users_who_promoted.map {| u | u.id»). }.присоединиться(",")})". Если вы не думаете, что это будет узким местом в производительности вашего приложения, простое обновление и сохранение каждого объекта модели может быть более читабельным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...