在另一个文件中扩展哈希常量

时间:2012-07-03 14:43:54

标签: ruby-on-rails ruby inheritance constants

我有一个宝石,其中一个类似于......:

class Test
    TESTING = {
        :sth1 => 'foo',
        :sth2 => 'bar'
    }

    # p Test.new.show 
    # should print 'cat'
    def show
        p TESTING[:sth3]
    end 

end

我在其他文件中扩展

# in other file
class Test 
    TESTING = {
        :sth3 => 'cat'
    }       
end

但我需要在第一个文件中使用:sth3,因为代码的第一部分代表。 Thx提前。

1 个答案:

答案 0 :(得分:2)

你没有扩展它,你用新的哈希替换了哈希。以下是修复方法:

# in the other file
Test::TESTING[:sth3] = 'cat'

我建议使用延迟初始化的方法,以便您可以按任何顺序排列分配:

class Test
  def self.testing
    @testing ||= {}
  end

  testing[:sth1] = 'foo'
  testing[:sth2] = 'bar'
end

# in the other file
Test.testing[:sth3] = 'cat'