2013-12-16 89 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 

如下您可以訪問數據