Skip to content

Commit

Permalink
Merge 137ad36 into 8888fa1
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaiespresso committed Aug 20, 2019
2 parents 8888fa1 + 137ad36 commit 5287222
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 3 deletions.
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,26 @@ class ProjectSettingObject < RailsSettings::SettingObject
end
```

In case you need to define settings separatedly for the same models, you can use the persistent option

```ruby
module UserDashboardConcern
extend ActiveSupport::Concern

included do
has_settings persistent: true do |s|
s.key :dashboard
end
end
end

class User < ActiveRecord::Base
has_settings persistent: true do |s|
s.key :calendar
end
end
```

### Set settings

```ruby
Expand Down
11 changes: 9 additions & 2 deletions lib/rails-settings/configuration.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,15 @@ def initialize(*args, &block)
raise ArgumentError unless klass

@klass = klass
@klass.class_attribute :default_settings, :setting_object_class_name
@klass.default_settings = {}

if options[:persistent]
@klass.class_attribute :default_settings unless @klass.methods.include?(:default_settings)
else
@klass.class_attribute :default_settings
end

@klass.class_attribute :setting_object_class_name
@klass.default_settings ||= {}
@klass.setting_object_class_name = options[:class_name] || 'RailsSettings::SettingObject'

if block_given?
Expand Down
2 changes: 1 addition & 1 deletion lib/rails-settings/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module RailsSettings
VERSION = '2.4.3'
VERSION = '2.4.4'
end
12 changes: 12 additions & 0 deletions spec/configuration_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,18 @@ class Dummy
expect(Dummy.default_settings).to eq({ :dashboard => {}, :calendar => {} })
expect(Dummy.setting_object_class_name).to eq('MyClass')
end

context 'persistent' do
it "should keep settings between multiple configurations initialization" do
Configuration.new(Dummy, :persistent => true) do |c|
c.key :dashboard, :defaults => { :theme => 'red' }
end

Configuration.new(Dummy, :calendar, :persistent => true)

expect(Dummy.default_settings).to eq({ :dashboard => { 'theme' => 'red' }, :calendar => {} })
end
end
end

describe Configuration, 'failure' do
Expand Down

0 comments on commit 5287222

Please sign in to comment.