1

我在我的 Rails 应用程序(Ruby 2.0.0p247 / Rails 3.2.13)中使用了settingslogic gem。

我可以在不嵌套时动态更改设置,例如

#config/settings.yml
defaults:&defaults
  mysetting: 1
  nested:
    myothersetting: 2

Settings[:mysetting] = 10
Settings.mysetting # puts 10

但我无法以相同的方式更改嵌套属性:

Settings[:nested][:myothersetting] = 20
Settings.nested.myothersetting # puts 2

我究竟做错了什么?

4

1 回答 1

3

我不确定您使用的是哪个版本的 ruby​​ & rails,但我尝试使用与您的 yaml 文件类似的设置,但出现了关于解析错误的错误。我认为一个在它下面嵌套了一些东西的键也不能有一个值。

也就是说,我经历了类似的行为——嵌套值的基于哈希的访问器设置/返回了预期值,而基于方法的访问器从文件中返回了值并且没有得到更新:

# config/settings.yml
defaults: &defaults
  thing1: 1
  thing2: 2
  nest:
    thing3: 3

development:
  <<: *defaults

2.0.0p247 :001 > Settings[:nest][:thing3] = 30
 => 30
2.0.0p247 :002 > Settings[:nest][:thing3]
 => 30
2.0.0p247 :003 > Settings.nest.thing3
 => 3

看起来这可能是 gem 中的错误,基于 github 上的问题列表似乎是许多具有嵌套属性的错误之一。

于 2013-08-11T19:18:30.403 回答