我在Rails項目中使用couchrest_model,我試圖檢索在couchdb.yml中定義的服務器URL。在Ruby中調用類方法
我可以看到server
是在connection.rb中定義的類方法,但是如何在代碼中訪問它?我想:
server = CouchRest::Model.server
但看到下面的錯誤:
NoMethodError (undefined method `server' for CouchRest::Model:Module)
我在Rails項目中使用couchrest_model,我試圖檢索在couchdb.yml中定義的服務器URL。在Ruby中調用類方法
我可以看到server
是在connection.rb中定義的類方法,但是如何在代碼中訪問它?我想:
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
(不Model
),那麼你應該能夠
Project.server
其中Project
是型號名稱來訪問它。
CouchRest::Model::Base.server
也應該可以工作,但它可能不是最好的解決方案,因爲它不是面向模型的。
有看代碼,服務器CouchRest ::模型定義::連接模塊,然後將其包含在CouchRest: :Model :: Base類。所以,這應該工作:
server = CouchRest::Model::Base.server
請注意,我不知道這個寶石,所以這可能不是它的正確使用。您應該查看文檔以獲取更多詳細信息。
雖然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
如下您可以訪問數據