2012-01-17 23 views
7

Làm cách nào để thực thi truy vấn SQL từ ứng dụng Rails tới cơ sở dữ liệu MySQL?Làm cách nào để truy vấn cơ sở dữ liệu MySQL từ ứng dụng Rails không có mô hình?

Ứng dụng của tôi sử dụng Postgres làm cơ sở dữ liệu chính, nhưng tôi cần đọc một số thông tin từ cơ sở dữ liệu MySQL thứ cấp. Tôi không thể tạo mô hình vì cơ sở dữ liệu MySQL có hơn 100 bảng, được đặt tên theo cách không tương thích cho mỗi bảng. Nó có thể được thực hiện mà không có ActiveRecord hoặc một số cách khác?

+0

Rails không hỗ trợ buộc tên bảng cho một mô hình cụ thể bằng cách sử dụng 'set_table_name" foo "'. Nếu số lượng bảng là tĩnh và có khả năng bạn sẽ sử dụng tất cả chúng, tôi sẽ bắt đầu tạo mô hình theo thứ tự chúng cần. Cũng có hỗ trợ trong AR: Base để chỉ định trường khóa chính. – Nick

Trả lời

13

Bạn có thể sử dụng trực tiếp gem mysql2. Đọc tài liệu ở đây: https://github.com/brianmario/mysql2

Hoặc:

Bạn có thể tạo một lớp mới như MySqlConnection như thế này:

class MysqlConnection < ActiveRecord::Base 
    self.establish_connection(:adapter => 'mysql', :database => 'some-database-name') # Set all the other required params like host, user-name, etc 
end 

Từ giờ trở đi, bạn có thể làm,

MysqlConnection.connection.select_all("SELECT * FROM table_name") 

Theo liên kết để hiểu cách lưu trữ chi tiết cấu hình trong database.yml: http://weare.buildingsky.net/2006/12/06/multiple-concurrent-database-connections-with-activerecord

+0

Cảm ơn bạn đã trả lời! Đó là giải pháp tốt nhất cho tôi. – Alve

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