Skip to content

Commit 77acefd

Browse files
committed
No ProtectedAttributes in supported Rails versions
1 parent bfa059c commit 77acefd

File tree

4 files changed

+9
-64
lines changed

4 files changed

+9
-64
lines changed

lib/rails-settings.rb

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
module RailsSettings
2-
# In Rails 4, attributes can be protected by using the gem `protected_attributes`
3-
# In Rails 5, protecting attributes is obsolete (there are `StrongParameters` only)
4-
def self.can_protect_attributes?
5-
defined?(ProtectedAttributes)
6-
end
7-
end
8-
91
require 'rails-settings/setting_object'
102
require 'rails-settings/configuration'
113
require 'rails-settings/base'

lib/rails-settings/base.rb

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,8 @@ def settings(var)
1414
raise ArgumentError.new("Unknown key: #{var}")
1515
end
1616

17-
if RailsSettings.can_protect_attributes?
18-
setting_objects.detect { |s| s.var == var.to_s } ||
19-
setting_objects.build({ var: var.to_s }, without_protection: true)
20-
else
21-
setting_objects.detect { |s| s.var == var.to_s } ||
22-
setting_objects.build(var: var.to_s, target: self)
23-
end
17+
setting_objects.detect { |s| s.var == var.to_s } ||
18+
setting_objects.build(var: var.to_s, target: self)
2419
end
2520

2621
def settings=(value)

lib/rails-settings/setting_object.rb

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,6 @@ class SettingObject < ActiveRecord::Base
1919
serialize :value, Hash
2020
end
2121

22-
if RailsSettings.can_protect_attributes?
23-
# attr_protected can not be used here because it touches the database which is not connected yet.
24-
# So allow no attributes and override <tt>#sanitize_for_mass_assignment</tt>
25-
attr_accessible
26-
end
27-
2822
REGEX_SETTER = /\A([a-z]\w*)=\Z/i
2923
REGEX_GETTER = /\A([a-z]\w*)\Z/i
3024

@@ -50,21 +44,6 @@ def method_missing(method_name, *args, &block)
5044

5145
protected
5246

53-
if RailsSettings.can_protect_attributes?
54-
# Simulate attr_protected by removing all regular attributes
55-
def sanitize_for_mass_assignment(attributes, role = nil)
56-
attributes.except(
57-
'id',
58-
'var',
59-
'value',
60-
'target_id',
61-
'target_type',
62-
'created_at',
63-
'updated_at',
64-
)
65-
end
66-
end
67-
6847
private
6948

7049
def _get_value(name)

spec/setting_object_spec.rb

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,13 @@
33
describe RailsSettings::SettingObject do
44
let(:user) { User.create! name: 'Mr. Pink' }
55

6-
if RailsSettings.can_protect_attributes?
7-
let(:new_setting_object) do
8-
user.setting_objects.build({ var: 'dashboard' }, without_protection: true)
9-
end
10-
let(:saved_setting_object) do
11-
user.setting_objects.create!(
12-
{ var: 'dashboard', value: { 'theme' => 'pink', 'filter' => false } },
13-
without_protection: true,
14-
)
15-
end
16-
else
17-
let(:new_setting_object) do
18-
user.setting_objects.build({ var: 'dashboard' })
19-
end
20-
let(:saved_setting_object) do
21-
user.setting_objects.create!(
22-
{ var: 'dashboard', value: { 'theme' => 'pink', 'filter' => false } },
23-
)
24-
end
6+
let(:new_setting_object) do
7+
user.setting_objects.build({ var: 'dashboard' })
8+
end
9+
let(:saved_setting_object) do
10+
user.setting_objects.create!(
11+
{ var: 'dashboard', value: { 'theme' => 'pink', 'filter' => false } },
12+
)
2513
end
2614

2715
describe 'serialization' do
@@ -136,15 +124,6 @@
136124
it 'should not save blank hash' do
137125
expect(new_setting_object.update({})).to be_truthy
138126
end
139-
140-
if RailsSettings.can_protect_attributes?
141-
it 'should not allow changing protected attributes' do
142-
new_setting_object.update!(var: 'calendar', foo: 42)
143-
144-
expect(new_setting_object.var).to eq('dashboard')
145-
expect(new_setting_object.foo).to eq(42)
146-
end
147-
end
148127
end
149128

150129
describe 'save' do

0 commit comments

Comments
 (0)