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 }
假设模型情况如下:
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 }