我一直在阅读 Rails 3 Way 并正在检查CollectionAssociation.include?
按照书中的描述:
检查提供的记录是否存在于关联集合中,以及它是否仍然存在于基础数据库表中。
我做了几个测试来检查数据库是否被检查,但看起来它没有检查。
> book = Book.first
=> #<Book id: 1, title: "Programming Ruby"...
> last_chapter = book.chapters.last
=> #<Chapter id: 2, title: "Chapter 2", book_id: 1,
> b.chapters.include?(last_chapter)
=> true
> last_chapter.destroy
DELETE FROM "chapters" WHERE "chapters"."id" = ? [["id", 2]]
=> #<Chapter id: 2, title: "Chapter 2", book_id: 1,
> b.chapters.include?(last_chapter)
=> true
> book.chapters.reload
=> [#<Chapter id: 1, title: "Chapter 1", book_id: 1,...]
> b.chapters.include?(last_chapter)
=> false
我检查了源代码,发现有一行load_target if options[:finder_sql]
似乎有条件地加载了记录。
您知道何时访问数据库以检查数据库中是否存在记录吗?