2011-01-21 29 views
5

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ì?

Trả lời

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