Hi guys,
I have a problem with counter cache on the rails trunk version. I have
the following test case (tried to post on core mailing list but looks
like it isn’t accepting my mail):
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:
- SELECT * FROM documents WHERE (documents.id = 1)
- UPDATE documents SET bookmarks_count = bookmarks_count + 1 WHERE (id
= 1) - COMMIT
- BEGIN
- SELECT * FROM bookmarks WHERE (bookmarks.bookmarkable_id = 1 AND
bookmarks.bookmarkable_type = ‘Document’) - UPDATE documents SET
content
= NULL,bookmarks_count
= 0,name
= NULL WHERE id = 1 - 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
Thnx,
Abdul