0

我在 Rails 项目中使用couchrest_model,我正在尝试检索在 couchdb.yml 中定义的服务器 URL。

我可以看到这是在connection.rbserver中定义的类方法,但是如何在代码中访问它?我在尝试:

server = CouchRest::Model.server

但看到以下错误:

NoMethodError (undefined method `server' for CouchRest::Model:Module)
4

3 回答 3

2

CouchRest::ModelCouchRest::Model::Base居住的命名空间。

您应该通过继承来创建模型Base

class Project < CouchRest::Model::Base
  use_database 'projects'
end

并且因为Connection混入Model::Base(not Model) 那么你应该能够访问它

Project.server

Project您的型号名称在哪里。

CouchRest::Model::Base.server

也应该工作,但它可能不是最好的解决方案,因为它不是面向模型的。

于 2013-12-16T17:42:20.293 回答
0

查看代码,服务器定义在 CouchRest::Model::Connection 模块中,然后包含在 CouchRest::Model::Base 类中。所以,这应该工作:

server = CouchRest::Model::Base.server

请注意,我不知道这颗宝石是否如此,所以这可能不是它的正确用途。您可能应该查看文档以获取更多详细信息。

于 2013-12-16T17:41:53.893 回答
0

虽然 couchrest_model 确实提供了对server方法的访问,但我不建议尝试使用它。与传统的 ORM 或 RDMS 不同,没有理由不能从同一个项目访问多个服务器。

为每个模型提供的database方法是连接详细信息的规范来源,可能对于手动执行 CouchDB 操作最有用。也可以从模型实例访问数据库对象,这在处理代理模型时特别有用。

给定模型:

class Project < CouchRest::Model::Base
  use_database 'projects'
end

您可以按如下方式访问数据:

Project.database  # => Database object
Project.database.server.uri   # => Server URL
Project.database.root  # => Database URL

在代理模型的情况下:

company = Company.first
company.invoices.database.root   # => Database URL
于 2014-09-02T14:49:47.770 回答