Rails 6:如何从尚未持久化的ActiveRecord Associations CollectionProxy 中删除一个元素?

Rails 6: How to delete an element from a not-yet-persisted ActiveRecord Associations CollectionProxy?

假设模型情况如下:

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 尚未保存在数据库中(因此,它们还没有 ID)。

删除不应该触及数据库,而应该只发生在 ActiveRecord Associations CollectionProxy 使用 @library.save.[=20 在数据库中持久化 之前=]

我建议重新分配 books 集合:

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