【发布时间】:2011-09-05 13:20:59
【问题描述】:
我正在尝试使用 Ruby 1.8.7 将 rails-settings gem (https://github.com/100hz/rails-settings) 实现到我的 Rails 3 项目中
设置和检索设置完美无缺,但如果我尝试获取特定用户的所有设置,则会出现错误。
因此,在“rails 控制台”中,以下工作:
user = User.find(123)
user.settings.color = :red
user.settings.color
但如果我尝试获取所有设置:
user.settings.all
我明白了:
NoMethodError: []:Array 的未定义方法“合并”
来自 /[...]/.rvm/gems/ruby-1.8.7-p334/bundler/gems/rails-settings-883114dfd933/lib/rails-settings/settings.rb:55:in `all'
来自 (irb):5
settings.rb 中的第 55 行:
#retrieve all settings as a hash (optionally starting with a given namespace)
def self.all(starting_with=nil)
options = starting_with ? { :conditions => "var LIKE '#{starting_with}%'"} : {}
vars = thing_scoped.find(:all, {:select => 'var, value'}.merge(options))
result = {}
vars.each do |record|
result[record.var] = record.value
end
# line 55 is below this one...
@@defaults.select{ |k| k =~ /^#{starting_with}/ }.merge(result).with_indifferent_access
end
这里有什么问题?或者这是 ruby 1.8.7 vs. 1.9.2 的事情?
【问题讨论】:
-
能否添加
@@defaults初始化代码?这对于识别那里的问题将非常有帮助。看起来你有一个数组而不是哈希。
标签: ruby ruby-on-rails-3