rails-settings icon indicating copy to clipboard operation
rails-settings copied to clipboard

Default settings still working?

Open shrinathaithal opened this issue 7 years ago • 3 comments

Going by the README, I did try this -

 has_settings do |s|
    s.key :notifications, :defaults => { :email_frequency => "7" }
  end

When I do User.find(9).to_settings_hash, I do see the default applied.
However, when I try User.find(9).settings(:notifications), I just see a {} for value.

Digging in the code, I see that line 16 & 18 of base.rb are initializing just the var with empty stuff, nothing in it. I added value: self.class.default_settings[var] when it is building, it starts to work fine now.

Am I not seeing this magic dust somewhere? Happy to raise pull request if there is a bug here.

shrinathaithal avatar Nov 27 '18 17:11 shrinathaithal

looks like still not working

ajays1991 avatar Apr 01 '19 10:04 ajays1991

Not working for me either

charlesemarsh avatar Mar 31 '20 03:03 charlesemarsh

This is because the defaults settings are only returned when you call a method on the SettingObject.

So, this will just return a SettingObject that indicates that nothing has been set for the user yet:

user.settings(:notifications)
# => #<RailsSettings::SettingObject id: nil, var: "notifications", value: {}, target_type: "User", target_id: 9, created_at: nil, updated_at: nil>

Whereas calling the method will return the default value:

user.settings(:notifications).email_frequency
# => 7

farkmarnum avatar Feb 28 '22 20:02 farkmarnum