次の Rails コードがあります。
class Shop < ActiveRecord::Base
# ...
def validate_books_have_authors
self.books.each do |book|
# Urghh...caching book.authors unless we call directly
# puts book.authors
errors[:books] << t('book.no_authors', :book => book.name) unless book.authors.any?
end
end
end
最初の実行では、バリデーターは正しく処理されますが、同じメソッドを再度実行すると、book.authors.any? の値は book.authors 行を置くコメントを外さない限り、キャッシュされた値を返します
簡単な質問ですが、book.authors.any の値を保証するにはどうすればよいでしょうか? キャッシュされていませんか?