2011-01-22 37 views
6

Tôi phải sao chép một trường BLOB từ bảng này sang bảng khác và tôi muốn sử dụng truy vấn INSERT-SELECT để đạt được điều này.Tôi có thể thực hiện thao tác INSERT-SELECT với API Rails không?

INSERT INTO target_table (key, data, comment) 
    SELECT 'my key', data, 'some comment' FROM source_table 

Điều này có thể thực hiện với API Rails không?

Tất nhiên tôi luôn có thể sử dụng ActiveRecord::Base.connection để gửi truy vấn gốc tới cơ sở dữ liệu, nhưng tôi hy vọng sẽ tìm được "Đường dẫn" để thực hiện việc này. (Không liên quan đến việc tải dữ liệu trong ứng dụng Rails của tôi)

+0

Đối với những người trong chúng ta không hiểu biết về cách điều hướng tài liệu Rails, sẽ không hợp lý khi có ví dụ về cuộc gọi API ActiveRecord :: Base.connection tại đây? Tôi đang tìm kiếm điều này không rõ ràng để loại bỏ tài liệu .... – Philip

Trả lời

3

Đây là một kịch bản điển hình khi sử dụng SQL trực tiếp bằng cách sử dụng ActiveRecord::Base.connection có ý nghĩa và nhạy cảm. Không thể có bất kỳ đường ray nào cho nó như bạn mô tả. Ngay cả khi có được một, nó đã tải nó trong bộ nhớ và chèn nó vào bảng mục tiêu liên quan đến hai mô hình; đây là điên rồ.

+3

Tôi có xu hướng đồng ý với tuyên bố "kịch bản điển hình", nhưng tại sao bạn nghĩ rằng không thể có bất kỳ cách nào? Chỉ cần xem xét những thứ tuyệt vời mà Arel có thể làm mà không cần tải mọi thứ vào bộ nhớ. –

+0

Cảm ơn DR, nó là từ bình luận của bạn ở trên tôi đã xảy ra để tìm hiểu về Arel với Rails-3. Do đó tôi bầu nó lên! Với Arel, một truy vấn giống như một câu hỏi có lẽ là có thể. – karthiks

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