2008-09-26 20 views
13

Tôi muốn cách kinh điển để thực hiện việc này. Các tìm kiếm trên Google của tôi đã xuất hiện ngắn. Tôi có một mô hình ActiveRecord nên ánh xạ tới một cơ sở dữ liệu khác với phần còn lại của ứng dụng. Tôi cũng muốn lưu các cấu hình mới trong tệp database.yml.Làm thế nào để xử lý tốt nhất các kết nối cơ sở dữ liệu trên mỗi Mô hình với ActiveRecord?

Tôi hiểu rằng setup_connection nên được gọi, nhưng không rõ nơi. Dưới đây là những gì tôi đã có cho đến nay và không hoạt động:

class Foo < ActiveRecord::Base 
    establish_connection(('foo_' + ENV['RAILS_ENV']).intern) 
end 

Trả lời

21

Ngoài ra, nó là một ý tưởng tốt để phân lớp mô hình của bạn có sử dụng cơ sở dữ liệu khác nhau, chẳng hạn như:

class AnotherBase < ActiveRecord::Base 
    self.abstract_class = true 
    establish_connection "anotherbase_#{RAILS_ENV}" 
end 

Và trong mô hình của bạn

class Foo < AnotherBase 
end 

Nó rất hữu ích khi bạn cần phải thêm tiếp theo các mô hình truy cập cùng một cơ sở dữ liệu khác.

5

Heh. Tôi đã đúng! Sạch sẽ hơn:

class Foo < ActiveRecord::Base 
    establish_connection "foo_#{ENV['RAILS_ENV']}" 
end 

Bài đăng tuyệt vời at pragedave.pragprog.com.

Các vấn đề liên quan