2011-09-14 48 views
5

tôi đang cố gắng để kết nối nhiều cơ sở dữ liệu trong ROR application.My database.yml là trông giống như này trong tập tin database.yml của bạnNhiều DB kết nối trong đường ray

phát triển:

adapter: mysql 
username: root 
password: 
database: example_development 

tin:

adapter: mysql 
username: root 
password: 
database: example_private_development 

có thể kết nối bằng establish_connection: private

Nghi ngờ của tôi là cách sử dụng rake db: create.I không thể nhận được giải pháp từ google.

Hãy giúp tôi xóa nó.

Trả lời

6

Hãy thử

rake db:create:all 

Và vâng, nó có thể có nhiều kết nối db trong một ứng dụng Rails.

Đây là những gì tôi đã làm một lần, tôi đã tạo hai lớp kế thừa từ ActiveRecord::Base và đặt các kết nối bên trong các lớp đó.

Sau đó, tôi được thừa hưởng tất cả các mô hình của tôi trong một trong những lớp học thay vì trực tiếp ActiveRecord

Dưới đây là một ví dụ:

database.yml file 

#app uses two database 
#1 - test1 
#2 - test2 
test1: 
    adapter: mysql 
    encoding: utf8 
    database: test1 
    username: root 
    password: xxx 
    host: localhost 

test2: 
    adapter: mysql 
    encoding: utf8 
    database: test2 
    username: root 
    password: xxx 
    host: localhost 

Sau đó, tôi có hai mô hình cho cả hai cơ sở dữ liệu test1 và test2:

class Test1Base < ActiveRecord::Base 
    self.abstract_class = true 
    establish_connection("test1") 
end 

class Test2Base < ActiveRecord::Base 
    # No corresponding table in the DB. 
    self.abstract_class = true 
    establish_connection("test2") 
end 

Sau đó, tôi kế thừa các mô hình của mình theo cơ sở dữ liệu:

class School < Test1Base 
    #code 
end 

class Student < Test2Base 
    #code 
end 
+0

Hi Sameera, câu trả lời của bạn là đúng. Tôi có thêm một câu hỏi làm thế nào có thể di chuyển các mô hình cho "portal_development" .Help tôi ... –

+0

Hi @Shamith, Rất tiếc, đó là lỗi đánh máy, Đó phải là tên env, tôi đã chỉnh sửa database.yml ở trên, Vì tôi đã sử dụng tập tin hiện tại của tôi như là một ví dụ quên để loại bỏ một số dòng, xin lỗi ...: D – sameera207

2

Cảm ơn bạn đã trả lời.

chúng tôi có thể di chuyển mô hình cho DB cụ thể, ví dụ

db:migrate RAILS_ENV="portal_development"'.

Và nhiều thay đổi cho việc thiết lập kết nối với DB.check sau khi chỉnh sửa bên dưới

class Test1Base < ActiveRecord::Base 
    self.abstract_class = true 
    establish_connection :development 
end 

class Test2Base < ActiveRecord::Base 
    # No corresponding table in the DB. 
    self.abstract_class = true 
    establish_connection :portal_development 
end 

Cảm ơn Sameera trả lời quý báu của bạn.

cổ vũ

Shamith c

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