Hi guys,
I have a problem with counter cache on the rails trunk version. I have the following test case:
doc = Document.new assert doc.bookmarks.create() assert doc.save! assert doc.reload assert_equal 1, doc.bookmarks_count
But doc.save! sets the bookmarks_count column on document to 0 (after it has been raised by bookmarks.create)
the following queries can be found in log:
1. SELECT * FROM documents WHERE (documents.id = 1) 2. UPDATE documents SET bookmarks_count = bookmarks_count + 1 WHERE (id = 1) e 3. COMMIT 4. BEGIN 5. SELECT * FROM bookmarks WHERE (bookmarks.bookmarkable_id = 1 AND bookmarks.bookmarkable_type = 'Document') 6. UPDATE documents SET `content` = NULL, `bookmarks_count` = 0, `name` = NULL WHERE id = 1 7. COMMIT
quite frustrating... :S
My models:
-- Document.rb: class Document < ActiveRecord::Base has_many :bookmarks, :as => :bookmarkable, :dependent => :destroy end
-- Bookmark.rb: class Bookmark < ActiveRecord::Base # associations belongs_to :bookmarkable, :polymorphic => true, :counter_cache => "bookmarks_count" end