Skip to content

Commit 3db405b

Browse files
committed
fix polymorphic association bug
1 parent 05ac3a7 commit 3db405b

25 files changed

+85
-22
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
1.2.0
22
-----
33
* [clear cache after update_counters](https://github.com/csdn-dev/second_level_cache/commit/240dde81199124092e0e8ad0500c167ac146e301)
4+
5+
1.2.1
6+
-----
7+
* [fix polymorphic association bug]

Gemfile.lock

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
PATH
22
remote: .
33
specs:
4-
second_level_cache (1.1.1)
5-
activesupport (> 3.0)
4+
second_level_cache (1.2.1)
5+
activesupport (~> 3.2.0)
66

77
GEM
88
remote: http://rubygems.org/
99
specs:
10-
activemodel (3.2.1)
11-
activesupport (= 3.2.1)
10+
activemodel (3.2.6)
11+
activesupport (= 3.2.6)
1212
builder (~> 3.0.0)
13-
activerecord (3.2.1)
14-
activemodel (= 3.2.1)
15-
activesupport (= 3.2.1)
16-
arel (~> 3.0.0)
13+
activerecord (3.2.6)
14+
activemodel (= 3.2.6)
15+
activesupport (= 3.2.6)
16+
arel (~> 3.0.2)
1717
tzinfo (~> 0.3.29)
18-
activesupport (3.2.1)
18+
activesupport (3.2.6)
1919
i18n (~> 0.6)
2020
multi_json (~> 1.0)
21-
arel (3.0.0)
21+
arel (3.0.2)
2222
builder (3.0.0)
2323
i18n (0.6.0)
24-
multi_json (1.0.4)
24+
multi_json (1.3.6)
2525
rake (0.9.2.2)
26-
sqlite3 (1.3.5)
27-
tzinfo (0.3.31)
26+
sqlite3 (1.3.6)
27+
tzinfo (0.3.33)
2828

2929
PLATFORMS
3030
ruby
3131

3232
DEPENDENCIES
33-
activerecord (> 3.0)
33+
activerecord (~> 3.2.0)
3434
rake
3535
second_level_cache!
3636
sqlite3

init.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
# encoding: utf-8
1+
# -*- encoding : utf-8 -*-
22
require File.expand_path("../lib/second_level_cache", __FILE__)

lib/second_level_cache.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
require 'active_support/all'
23
require 'second_level_cache/config'
34
require 'second_level_cache/marshal'

lib/second_level_cache/active_record.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
require 'second_level_cache/active_record/base'
23
require 'second_level_cache/active_record/finder_methods'
34
require 'second_level_cache/active_record/persistence'

lib/second_level_cache/active_record/base.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
module SecondLevelCache
23
module ActiveRecord
34
module Base

lib/second_level_cache/active_record/finder_methods.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
require 'second_level_cache/arel/wheres'
23

34
module SecondLevelCache

lib/second_level_cache/active_record/persistence.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
module SecondLevelCache
23
module ActiveRecord
34
module Persistence

lib/second_level_cache/active_record/singular_association.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
module SecondLevelCache
23
module ActiveRecord
34
module Associations
@@ -10,8 +11,8 @@ module SingularAssociation
1011
end
1112

1213
def find_target_with_second_level_cache
13-
return find_target_without_second_level_cache unless association_class.second_level_cache_enabled?
14-
cache_record = association_class.read_second_level_cache(second_level_cache_key)
14+
return find_target_without_second_level_cache unless klass.second_level_cache_enabled?
15+
cache_record = klass.read_second_level_cache(second_level_cache_key)
1516
return cache_record.tap{|record| set_inverse_instance(record)} if cache_record
1617
record = find_target_without_second_level_cache
1718
record.write_second_level_cache

lib/second_level_cache/arel/wheres.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# encoding: utf-8
1+
# -*- encoding : utf-8 -*-
22
module SecondLevelCache
33
module Arel
44
class Wheres

lib/second_level_cache/config.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
module SecondLevelCache
23
module Config
34
extend self

lib/second_level_cache/marshal.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
module Marshal
23
class << self
34
def load_with_constantize(value)

lib/second_level_cache/version.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# -*- encoding: utf-8 -*-
1+
# -*- encoding : utf-8 -*-
22
module SecondLevelCache
3-
VERSION = "1.2.0"
3+
VERSION = "1.2.1"
44
end

second_level_cache.gemspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ Gem::Specification.new do |gem|
1515
gem.require_paths = ["lib"]
1616
gem.version = SecondLevelCache::VERSION
1717

18-
gem.add_runtime_dependency "activesupport", ["> 3.0"]
18+
gem.add_runtime_dependency "activesupport", ["~> 3.2.0"]
1919

20-
gem.add_development_dependency "activerecord", ["> 3.0"]
20+
gem.add_development_dependency "activerecord", ["~> 3.2.0"]
2121
gem.add_development_dependency "sqlite3"
2222
gem.add_development_dependency "rake"
2323
end

test/active_record/base_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
require 'active_record/test_helper'
23

34
class ActiveRecord::BaseTest < Test::Unit::TestCase

test/active_record/finder_methods_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
require 'active_record/test_helper'
23

34
class ActiveRecord::FinderMethodsTest < Test::Unit::TestCase

test/active_record/model/book.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1+
# -*- encoding : utf-8 -*-
12
ActiveRecord::Base.connection.create_table(:books, :force => true) do |t|
23
t.string :title
34
t.string :body
45
t.integer :user_id
6+
t.integer :images_count, :default => 0
57
end
68

79
class Book < ActiveRecord::Base
810
acts_as_cached
911

1012
belongs_to :user, :counter_cache => true
13+
has_many :images, :as => :imagable
1114
end

test/active_record/model/image.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# -*- encoding : utf-8 -*-
2+
ActiveRecord::Base.connection.create_table(:images, :force => true) do |t|
3+
t.string :url
4+
t.string :imagable_type
5+
t.integer :imagable_id
6+
end
7+
8+
class Image < ActiveRecord::Base
9+
acts_as_cached
10+
11+
belongs_to :imagable, :polymorphic => true, :counter_cache => true
12+
end
13+

test/active_record/model/user.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1+
# -*- encoding : utf-8 -*-
12
ActiveRecord::Base.connection.create_table(:users, :force => true) do |t|
23
t.string :name
34
t.string :email
45
t.integer :books_count, :default => 0
6+
t.integer :images_count, :default => 0
57
end
68

79
class User < ActiveRecord::Base
810
acts_as_cached
911

1012
has_many :books
13+
has_many :images, :as => :imagable
1114
end

test/active_record/persistence_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
require 'active_record/test_helper'
23

34
class ActiveRecord::PersistenceTest < Test::Unit::TestCase
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# -*- encoding : utf-8 -*-
2+
require 'active_record/test_helper'
3+
4+
class ActiveRecord::PolymorphicAssociationTest < Test::Unit::TestCase
5+
def setup
6+
@user = User.create :name => 'csdn', :email => '[email protected]'
7+
end
8+
9+
def test_should_get_cache_when_use_polymorphic_association
10+
image = @user.images.create
11+
12+
no_connection do
13+
assert_equal @user, image.imagable
14+
end
15+
end
16+
17+
def test_should_write_polymorphic_association_cache
18+
image = @user.images.create
19+
@user.expire_second_level_cache
20+
assert_nil User.read_second_level_cache(@user.id)
21+
assert_equal @user, image.imagable
22+
end
23+
end
24+

test/active_record/second_level_cache_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
require 'active_record/test_helper'
23

34
class ActiveRecord::SecondLevelCacheTest < Test::Unit::TestCase

test/active_record/singular_association_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
require 'active_record/test_helper'
23

34
class ActiveRecord::SingularAssociationTest < Test::Unit::TestCase

test/active_record/test_helper.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
require 'test_helper'
23
require 'active_record'
34
require 'second_level_cache/active_record'
@@ -29,3 +30,4 @@ def teardown
2930

3031
require 'active_record/model/user'
3132
require 'active_record/model/book'
33+
require 'active_record/model/image'

test/test_helper.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# -*- encoding : utf-8 -*-
12
require 'rubygems'
23
require 'bundler/setup'
34
require 'second_level_cache'

0 commit comments

Comments
 (0)