2013-12-16 56 views
0

我在Rails项目中使用couchrest_model,我试图检索在couchdb.yml中定义的服务器URL。在Ruby中调用类方法

我可以看到server是在connection.rb中定义的类方法,但是如何在代码中访问它?我想:

server = CouchRest::Model.server 

但看到下面的错误:

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

回答

2

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

您应该从Base继承创建一个模型。

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

而且由于Connection混入Model::Base(不Model),那么你应该能够

Project.server 

其中Project是型号名称来访问它。

CouchRest::Model::Base.server 

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

0

有看代码,服务器CouchRest ::模型定义::连接模块,然后将其包含在CouchRest: :Model :: Base类。所以,这应该工作:

server = CouchRest::Model::Base.server 

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

0

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

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

鉴于型号:

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

而且在代理模式的情况下:

company = Company.first 
company.invoices.database.root # => Database URL 

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

如下您可以访问数据