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