Ruby on rails MongoDB如何访问Ruby中的collection变量

Ruby on rails MongoDB如何访问Ruby中的collection变量,ruby-on-rails,ruby,mongodb,Ruby On Rails,Ruby,Mongodb,我很难理解这条线是怎么走的 return mongo\u client[collection]使用collection变量调用mongo\u client方法 我可以创建一个新的解决方案类,它(据我所知)调用initialize方法并创建@coll变量。@coll变量是通过调用self.collection创建的。在self.collection中,我返回mongo_客户机[collection]。但是,mongo_客户端方法不接受任何参数。该方法似乎是“硬编码”的,以使用特定的URL。集合变量

我很难理解这条线是怎么走的
return mongo\u client[collection]
使用collection变量调用mongo\u client方法

我可以创建一个新的解决方案类,它(据我所知)调用initialize方法并创建@coll变量。@coll变量是通过调用self.collection创建的。在self.collection中,我返回mongo_客户机[collection]。但是,mongo_客户端方法不接受任何参数。该方法似乎是“硬编码”的,以使用特定的URL。集合变量如何到达mongo_客户端方法

  class Solution
  MONGO_URL='mongodb://localhost:27017'
  MONGO_DATABASE='test'
  RACE_COLLECTION='race1'

  # helper function to obtain connection to server and set connection to use specific DB
  # set environment variables MONGO_URL and MONGO_DATABASE to alternate values if not
  # using the default.
  def self.mongo_client
    url=ENV['MONGO_URL'] ||= MONGO_URL
    database=ENV['MONGO_DATABASE'] ||= MONGO_DATABASE 
    db = Mongo::Client.new(url)
    @@db=db.use(database)
  end

  # helper method to obtain collection used to make race results. set environment
  # variable RACE_COLLECTION to alternate value if not using the default.
  def self.collection
    collection=ENV['RACE_COLLECTION'] ||= RACE_COLLECTION
    return mongo_client[collection]
  end
def initialize
    @coll=self.class.collection
  end

mongo_客户端
collection
类方法接受参数,它们只是隐藏在环境变量中(
ENV['mongo_URL']
和friends)。这就是你困惑的根源吗?我不这么认为。self.collection集合集合='race1'。然后我打电话给mongo_客户(“race1”)。但是在mongo_客户端中设置的数据库(@@db)是mongo::client.new('test')。请使用(mongo_URL)。对吗?那么,“race1”数据库是如何加载的呢?我在mongo_客户端方法中看不到这一点。