2013-12-16 3 views
0

레일 프로젝트에서 couchrest_model을 사용하고 couchdb.yml에 정의 된 서버 URL을 검색하려고합니다.Ruby의 클래스 메소드 호출

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 때문에

은 다음 Project는 모델 이름입니다

Project.server 

으로 액세스 할 수 있어야합니다 Model::Base (안 Model)로 혼합한다.

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 

: 모델을 감안할 때