2012-01-13 44 views
6

Tôi cần kết hợp hai mô hình với một has_many đơn giản. Vấn đề là tôi không muốn sử dụng id (_id) làm khóa chính cho liên kết. Tôi vẫn muốn mô hình tiếp tục sử dụng ObjectIds mặc định cho mọi thứ khác.Phím tùy chỉnh cho liên kết Mongoid

(Điều này được chạy trên Rails3.1 + Mongoid)

Vì vậy, về cơ bản tôi muốn:

class Message 
    ... 
    field :message_id, :default => proc { "fail-#{Time.now.to_f.to_s}" } 
    ... 
    has_many :message_reports, primary_key: :message_id, foreign_key: :message_id 
    ... 
end 
class MessageReport 
    ... 
    field :message_id, :default => proc { "fail-#{Time.now.to_f.to_s}" } 
    ... 
    has_many :message, primary_key: :message_id, foreign_key: :message_id 
    ... 
end 

này sẽ chỉ làm việc cho ActiveRecord. Mongoid không hỗ trợ tùy chọn primary_key.

Vậy làm cách nào để có được kết quả tương tự cho bộ sưu tập Mongoid?

Trước khi bạn nói: không làm điều đó ...

Lý do tôi thực sự thực sự cần phải kay trên lĩnh vực này và không phải là id đúng là rằng đây là những tin nhắn ... và message_ids là id độc đáo được API trả lại, tôi gọi để gửi tin nhắn. Sau đó cùng một id được nhận trong callbacks từ phía bên kia.

Tôi chỉ có thể thực hiện truy vấn và dán truy vấn vào một phương thức để tìm báo cáo "được liên kết" từ thư và ngược lại ... Tôi muốn chúng là các liên kết thực sự, nếu có thể.

Tôi có thể buộc quy trình truy xuất báo cáo tìm kiếm và đối sánh các đối tượng cho liên kết ... nhưng tôi không đặt trách nhiệm đó ở đó khi nó thừa và không còn gì để làm với dữ liệu này ngoài việc xác thực và lưu nó.

Nói tóm lại: Tôi muốn một hiệp hội :)

+0

+1 để chủ động làm việc với các phản đối :-) –

+0

hehe, tôi đã hỏi trực tuyến trước đó;) –

+0

@MartinWestin bạn đã giải quyết vấn đề này chưa? Tôi có chính xác cùng một vấn đề – jbnunn

Trả lời

1

Tính năng này không tồn tại trên Mongoid thực sự ngay cả trên tổng thể và nó không nằm trong kịch Mongoid 3,0

Do một số yêu cầu tính năng. Cộng đồng Mongoid thực sự mở để thêm một số tính năng mới nếu đó là một ý tưởng hay. Đối với tôi đó là một ý tưởng hay.

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