Rails 6: Как удалить элемент из еще не сохраненного ActiveRecord Associates CollectionProxy? - PullRequest
0 голосов
/ 19 июня 2020

Предположим следующую модельную ситуацию:

class Library < ApplicationRecord
  has_many :books
end

Как мне исправить приведенную ниже команду удаления (что неверно, потому что @library.books не Ruby Array, а Rails ActiveRecord Associations CollectionProxy) ?

@library.books.delete_if {|book| book.page_count < 100}
@library.save

Примечание:

@library и @library.books еще не сохранены в базе данных (таким образом, у них еще нет идентификаторов).

Удаление не должно касаться базы данных, а происходить исключительно в ActiveRecord Associations CollectionProxy , прежде чем оно будет сохранено в базе данных с использованием @library.save.

1 Ответ

1 голос
/ 19 июня 2020

Предлагаю переназначить books коллекцию:

@library.books = @library.books.select { |book| book.page_count >= 100 }
...