我需要將兩個模型與簡單的has_many關聯。問題是我不想使用id(_id)作爲關聯的主鍵。我仍然希望模型繼續使用默認的ObjectIds來處理其他事情。Mongoid Association的自定義鍵
(這是在Rails3.1 + Mongoid運行)
所以基本上我想:
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
這隻會ActiveRecord的工作。 Mongoid不支持primary_key選項。
那麼如何獲得Mongoid集合的相同結果呢?
你之前說:別這樣......
的原因,我真的真的需要琦在這一領域,而不是正確的ID是,這些消息......而message_ID進行唯一的id我通過API調用發送消息返回。之後在另一側的回調中收到相同的ID。
我可以只是做查詢,並將其粘貼在一個方法中,從消息中查找「關聯」報告,反之亦然......如果可能,我寧願讓它們成爲實際關聯。
我可以強制報告接收過程搜索並匹配關聯的對象......但我寧願不把責任放在那裏,因爲它是多餘的,它沒有其他任何事情要做除了驗證和保存這些數據外。
簡而言之:我寧可關聯:)
+1主動反對工作:-) – 2012-01-13 13:55:55
嘿嘿,我在網上問過之前;) – 2012-01-13 15:27:36
@MartinWestin你解決了嗎?我有完全相同的問題 – jbnunn 2012-02-29 23:09:59