Hiện tại có cách nào để thực hiện truy vấn chọn SQL thô bằng ActiveRecord trong Rails 4.0.0.beta1 không? Tôi thấy ActiveRecord :: Base.execute không còn tồn tại nữa. Cách chính xác của việc này là gì?Rails 4, truy vấn thô sử dụng ActiveRecord
33
A
Trả lời
49
đây thử điều này, chọn ví dụ ..:
query = "select ...."
results = ActiveRecord::Base.connection.execute(query)
10
Trong Rails 4 (có lẽ phiên bản trước cũng), nếu bạn đang đi với một truy vấn tùy chỉnh cho tốc độ, bạn có thể thêm một đối số :skip_logging
để tránh phải viết vào nhật ký:
query = "SELECT ..."
results = MyModel.connection.execute(query, :skip_logging)
(Lưu ý: Nếu tôi đang đọc những nguồn chính xác, điều này có thể không giữ đúng trong PostgreSQL.)
26
Chỉ cần thêm mười xu của tôi, một nguyên truy vấn bằng cách sử dụng Model.connection.execute sẽ không trả về một mô hình ActiveRecord - nó sẽ trả về một tập dữ liệu thô.
Sau đây sẽ trở lại mô hình ActiveRecord:
MyModel.find_by_sql(query)
chỉnh sửa: giả sử tất nhiên rằng bạn đang chạy một lựa chọn.
Các vấn đề liên quan
- 1. Rails 3 Truy vấn ActiveRecord sử dụng cả hai toán tử SQL IN và SQL OR
- 2. Ruby on Rails Truy vấn ActiveRecord bằng cách sử dụng một tham gia
- 3. Sử dụng Rails ActiveRecord để truy vấn đối tượng chưa được lưu
- 4. Cách sử dụng điều kiện OR trong truy vấn ActiveRecord
- 5. Truy vấn phụ ActiveRecord Yii
- 6. Lọc truy vấn ActiveRecord trong đường ray
- 7. Nhiều vấn đề được chọn với mối quan hệ HABTM bằng cách sử dụng Rails 4
- 8. Django: Paginator + truy vấn SQL thô
- 9. Cách sử dụng Bộ đệm truy vấn ActiveRecord với SQL tùy chỉnh
- 10. Hiệu quả ActiveRecord has_and_belongs_to_many truy vấn
- 11. Rails ActiveRecord Tạo hoặc Tìm
- 12. Rails truy vấn activerecord so sánh hai thuộc tính của cùng một bản ghi
- 13. Tại sao lại sử dụng "tự" để truy cập các thuộc tính mô hình ActiveRecord/Rails?
- 14. Đặt ActiveRecord/Rails sử dụng cột mysql TIMESTAMP thực tế
- 15. nhận giá trị thập phân thô từ truy vấn mysqldb
- 16. Rails ActiveRecord: Là kết hợp: bao gồm và: điều kiện truy vấn có thể?
- 17. Truy vấn Rails của tôi đang bắt đầu phức tạp, tôi có nên chuyển sang truy vấn SQL thô không? Bạn làm nghề gì?
- 18. Số lần trả về sử dụng truy vấn thô, sử dụng Khuôn khổ thực thể và MVC
- 19. Phiên trong Rails 4
- 20. Upsert in Rails ActiveRecord
- 21. Phân trang truy vấn ActiveRecord bị xáo trộn
- 22. Truy vấn ActiveRecord chậm hơn nhiều so với SQL thẳng?
- 23. Tải tệp thô lên Rails bằng Carrierwave
- 24. Propel: Nhận SQL thô từ đối tượng truy vấn?
- 25. Cách chạy truy vấn SQL thô với Phần tiếp theo
- 26. trả lại truy vấn tùy chỉnh chọn trong activerecord
- 27. Rails 4: Cách sử dụng include() với vị trí() để truy xuất các đối tượng liên quan
- 28. ĐƠN VỊ SQL với Rails ActiveRecord
- 29. Rails ActiveRecord Model Danh sách liên kết
- 30. Rails 4: ActiveRecord không lưu bất kỳ thuộc tính nào, lưu các giá trị mặc định
Dường như điều này không được dùng nữa khi gọi điều này từ bộ điều khiển. Chú ý: #connection không được dùng để truy cập nó thông qua lớp.' – Vortico
điều này là do bạn nên để mô hình tương tác với cơ sở dữ liệu thay vì truy cập cơ sở dữ liệu trực tiếp trong bộ điều khiển – ant
@ant Tôi nên mở giao dịch hoặc mở kết nối đủ để thực hiện truy vấn sql tùy chỉnh? [pastie example] (http://pastie.org/10111824) – gaussblurinc