Tôi có hai mô hình trong ứng dụng, ghi chú và nội dung nổi bật của mình. Chúng được xác định như:ĐƠN VỊ SQL với Rails ActiveRecord
class Note < ActiveRecord::Base
belongs_to :user
end
class Highlight < ActiveRecord::Base
has_and_belongs_to_many :users
end
Bây giờ, tôi muốn cả hai có thể truy cập trong cùng một luồng, được sắp xếp theo ngày tạo. Tôi không thể bao quanh đầu của tôi như thế nào để làm điều này trong ActiveRecord, vì vậy tôi đặt cùng truy vấn này:
SELECT book_id, page, content, created_at FROM `highlights`
INNER JOIN `highlights_users` ON `highlights`.id = `highlights_users`.highlight_id
WHERE (`highlights_users`.user_id = 1)
UNION SELECT book_id, page, content, created_at FROM notes
ORDER BY created_at DESC
Thêm tất nhiên, nó hoạt động, nhưng không cảm thấy rất Rails-y. Thêm vào đó, tôi không biết làm thế nào để cho biết các mục là ghi chú và đó là những điểm nổi bật. Tùy chọn khác là nhận luồng ghi chú và đánh dấu các luồng riêng biệt, sau đó hợp nhất các mảng. Điều đó cũng có vẻ vụng về, và tôi cảm thấy như có một sự trừu tượng ở đâu đó cho những gì tôi đang cố gắng làm.
Có một số chức năng ActiveRecord chính mà tôi thiếu ở đây không? Cách hiệu quả nhất để giải quyết vấn đề này là gì?
Tôi muốn quên tất cả về STI. Bạn nói đúng, nó trông giống như những gì tôi cần. Cảm ơn! –