Giả sử nó có thể truy cập được bằng cách sử dụng cùng một thông tin đăng nhập cơ sở dữ liệu và trên cùng một máy chủ MySQL, thì cách dễ nhất là chạy một truy vấn chỉ định cơ sở dữ liệu và bảng trong FROM
mệnh đề của truy vấn, chẳng hạn như:
ActiveRecord::Base.connection.select_one(
"SELECT * FROM blog_database.posts ORDER BY created_at DESC LIMIT 1")
select_one
sẽ trả về một giá trị băm của các cột. Để biết thêm thông tin về các phương pháp bạn có thể sử dụng trên connection
đối tượng, xem tài liệu này
.
Tùy chọn thứ hai là tạo một lớp con của ActiveRecord và gọi establish_connection
:
class Blog < ActiveRecord::Base
establish_connection :blog
def self.most_recent_post
connection.select_one("SELECT * FROM posts ...")
end
end
Bạn cũng sẽ cần tạo một blog
mục nhập cơ sở dữ liệu trong database.yml
của bạn tập tin. Xem setting_connection
để biết thêm chi tiết, mặc dù rất tiếc, việc sử dụng nó theo cách này chỉ thực sự được biết khi xem mã nguồn của establish_connection
.
Sau đó, bạn có thể sử dụng kết nối cơ sở dữ liệu blog trong các truy vấn, như sau:
Blog.connection.select_one("SELECT * FROM posts ...")
Điều tuyệt vời khi làm theo cách này là bây giờ bạn có một nơi tuyệt vời để xác định một phương thức (trong lớp Blog, như một phương thức lớp) để tìm nạp dữ liệu, như tôi đã làm ở trên.
Cả hai chiến lược này đều hoạt động tốt với Rails 2.x hoặc 3.x.