我在 Rails 项目中使用couchrest_model,我正在尝试检索在 couchdb.yml 中定义的服务器 URL。
我可以看到这是在connection.rbserver
中定义的类方法,但是如何在代码中访问它?我在尝试:
server = CouchRest::Model.server
但看到以下错误:
NoMethodError (undefined method `server' for CouchRest::Model:Module)
我在 Rails 项目中使用couchrest_model,我正在尝试检索在 couchdb.yml 中定义的服务器 URL。
我可以看到这是在connection.rbserver
中定义的类方法,但是如何在代码中访问它?我在尝试:
server = CouchRest::Model.server
但看到以下错误:
NoMethodError (undefined method `server' for CouchRest::Model:Module)
CouchRest::Model
是CouchRest::Model::Base
居住的命名空间。
您应该通过继承来创建模型Base
。
class Project < CouchRest::Model::Base
use_database 'projects'
end
并且因为Connection
混入Model::Base
(not Model
) 那么你应该能够访问它
Project.server
Project
您的型号名称在哪里。
CouchRest::Model::Base.server
也应该工作,但它可能不是最好的解决方案,因为它不是面向模型的。
查看代码,服务器定义在 CouchRest::Model::Connection 模块中,然后包含在 CouchRest::Model::Base 类中。所以,这应该工作:
server = CouchRest::Model::Base.server
请注意,我不知道这颗宝石是否如此,所以这可能不是它的正确用途。您可能应该查看文档以获取更多详细信息。
虽然 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