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_客户端方法中看不到这一点。