как отказаться от ассоциации AR, где существует определенное условие - PullRequest
0 голосов
/ 19 декабря 2018

Я хотел бы удалить элементы из следующей ассоциации (где site_placement имеет native_ad_placement.ad_type == "video") и иметь следующий код, но, похоже, это не работает

# not an array but an association
@sites.each do |site|
  site.site_placements.reject { |sp| (sp.native_ad_placement.ad_type == "video") }
end

Как я мог достичь этого?Я использую Rails 3.2.

1 Ответ

0 голосов
/ 19 декабря 2018

Вы должны использовать .reject! вместо .reject.

Но на самом деле, вы вообще не должны использовать отклонение.Если я не ошибаюсь, вы можете полностью достичь того же на уровне запросов, и это даже намного эффективнее.Примерно так:

Site.includes(site_placements: [: native_ad_placement]).where.not(native_ad_placements: { ad_type: "video" })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...