2013-12-16 2 views
0

Я использую couchrest_model в проекте Rails, и я пытаюсь получить URL-адрес сервера, определенный в couchdb.yml.Метод класса вызовов в Ruby

Я вижу, что server - это метод класса, определенный в connection.rb, но как я могу получить к нему доступ в коде? Я пытаюсь:

server = CouchRest::Model.server 

но видя следующее сообщение об ошибке:

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

ответ

2

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 

также должен работать, но это, вероятно, не лучшее решение, потому что оно не ориентировано на модель.

0

Имея взглянуть на код, сервер определен в CouchRest :: Модель модуля подключения, который затем включается в CouchRest ::: : Модель :: Базовый класс. Таким образом, это должно сработать:

server = CouchRest::Model::Base.server 

Обратите внимание, что я не знаю, что этот драгоценный камень делает это, возможно, нецелесообразно использовать его. Вероятно, вы должны проверить документацию для получения более подробной информации.

0

Хотя couchrest_model предлагает доступ к методу server, я бы не рекомендовал его использовать. В отличие от традиционных ORM или RDMS, нет причин, по которым вы не можете использовать несколько серверов из одного и того же проекта.

Метод database, предусмотренный для каждой модели, является каноническим источником сведений о соединении и, вероятно, наиболее полезен для выполнения операций CouchDB вручную. Объект базы данных также можно получить из экземпляров модели, что особенно полезно при работе с proxied models.

Учитывая модель:

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 
Смежные вопросы