Mongoid关联的自定义键

时间:2012-01-13 13:51:35

标签: 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

这仅适用于ActiveRecord。 Mongoid不支持primary_key选项。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

此类功能在Mongoid上并不存在,甚至在Master上也没有,而且在Mongoid 3.0中没有计划

做一些功能请求。如果这是一个好主意,Mongoid社区真的可以添加一些新功能。对我来说这是一个好主意。