Skip to content

Commit edd9f24

Browse files
authored
Restore caching in RailsAdmin::Config::Model#excluded? (#3587)
Partially reverts 2fa86c3. The commit introduced a regression such that RailsAdmin::Config::Model#excluded? stopped caching false values.
1 parent e8319bc commit edd9f24

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

lib/rails_admin/config/model.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ def initialize(entity)
4848
end
4949

5050
def excluded?
51-
@excluded ||= !RailsAdmin::AbstractModel.all.collect(&:model_name).include?(abstract_model.try(:model_name))
51+
return @excluded if defined?(@excluded)
52+
53+
@excluded = !RailsAdmin::AbstractModel.all.collect(&:model_name).include?(abstract_model.try(:model_name))
5254
end
5355

5456
def object_label

spec/rails_admin/config/model_spec.rb

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,21 @@
1111
end
1212

1313
it 'returns false when included, true otherwise' do
14-
expect(RailsAdmin.config(Player).excluded?).to be_truthy
15-
expect(RailsAdmin.config(Comment).excluded?).to be_falsey
14+
allow(RailsAdmin::AbstractModel).to receive(:all).and_call_original
15+
16+
player_config = RailsAdmin.config(Player)
17+
expect(player_config.excluded?).to be_truthy
18+
expect(RailsAdmin::AbstractModel).to have_received(:all).once
19+
# Calling a second time uses the cached value.
20+
expect(player_config.excluded?).to be_truthy
21+
expect(RailsAdmin::AbstractModel).to have_received(:all).once
22+
23+
comment_config = RailsAdmin.config(Comment)
24+
expect(comment_config.excluded?).to be_falsey
25+
expect(RailsAdmin::AbstractModel).to have_received(:all).twice
26+
# Calling a second time uses the cached value.
27+
expect(comment_config.excluded?).to be_falsey
28+
expect(RailsAdmin::AbstractModel).to have_received(:all).twice
1629
end
1730
end
1831

0 commit comments

Comments
 (0)