Mongoid关联的自定义键

Mar*_*tin 6 ruby-on-rails mongoid

我需要将两个模型与一个简单的has_many相关联.问题是我不想使用id(_id)作为关联的主键.我仍然希望模型继续使用默认的ObjectIds.

(这是在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
Run Code Online (Sandbox Code Playgroud)

这只适用于ActiveRecord.Mongoid不支持primary_key选项.

那么如何为Mongoid集合获得相同的结果呢?

在你说之前:不要那样做......

我真的需要在这个领域而不是正确的id上运行的原因是这些是消息......而message_ids是由我调用发送消息的API返回的唯一ID.之后,在另一方的回调中收到相同的id.

我可以做一些查询并将其粘贴在一个方法中,以便从消息中找到"关联"报告,反之亦然......如果可能的话,我宁愿让它们成为实际关联.

我可以强制报告接收过程来搜索和匹配关联的对象...但是当它是多余的时候我宁愿不把那个责任放在那里而且它除此之外没有任何关系.验证并保存它.

简而言之:我更喜欢一个协会:)

shi*_*ara 1

实际上,Mongoid 上甚至 Master 上都不存在此功能,而且 Mongoid 3.0 中也没有计划使用此功能

做一些功能请求。如果这是个好主意,Mongoid 社​​区非常愿意添加一些新功能。对我来说这是个好主意。