2012-10-23 22 views
11

Tôi đang nói chuyện với nhiều cơ sở dữ liệu bằng cách sử dụng Mongoid.override_database ("database_name") sử dụng Mongoid với đường ray. Làm cách nào để tìm cơ sở dữ liệu hiện tại theo chương trình?Làm thế nào để lập trình được cơ sở dữ liệu hiện tại Mongoid đang ghi vào?

Tài liệu Mongoid trên các phiên: http://mongoid.org/en/moped/docs/driver.html xác định các phương pháp để ghi đè cơ sở dữ liệu nhưng không xác định cách để lấy cơ sở dữ liệu hiện tại đang sử dụng.

Trả lời

23

OK!

Mongoid.default_session.options[:database] 
+8

Bây giờ là biểu tượng: 'Mongoid.default_session.options [: database]' – stef

+2

Đã sửa lỗi. Cảm ơn bạn. –

+1

Cảnh báo, đây KHÔNG phải là chủ đề an toàn !! - Nếu bạn đang chuyển đổi cơ sở dữ liệu trong một before_filter trong bộ điều khiển ứng dụng của bạn, điều này trả về tên cơ sở dữ liệu được sử dụng trong các chủ đề khác trong ứng dụng. – Hackeron

4

Nếu bạn muốn cơ sở dữ liệu overrided bạn thực sự cần phải sử dụng

Mongoid::Threaded.database_override 
4

Cách mới để có được điều này là

Mongoid::Config.clients["default"]["database"] 

Bạn cũng có thể chỉ có một cái nhìn tại

Mongoid::Config.clients 

để xem nội dung khác là gì ailable.

+0

Bạn cũng có thể sử dụng các ký hiệu. 'Mongoid :: Config.clients [: default] [: database]' – Jason

1

Chạy Mongoid.default_session.options [: database] đưa ra lỗi rằng default_session không hợp lệ. Nó bây giờ là default_client. Điều đó làm việc tuyệt vời.

Chạy ứng dụng mà không có [: database] để nhận tất cả tùy chọn và xem cấu hình đầy đủ của cơ sở dữ liệu của bạn.