我需要将两个模型与一个简单的 has_many 关联起来。问题是我不想使用 id (_id) 作为关联的主键。我仍然希望模型继续使用默认的 ObjectId 来处理其他所有事情。
(这是在 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。
我可以只进行查询并将其粘贴在一种方法中以从消息中查找“关联”报告,反之亦然......如果可能的话,我宁愿让它们成为实际的关联。
我可以强制报告接收过程搜索并匹配关联的对象...但我不想把这个责任放在那里,因为它有点多余并且与除了验证和保存这些数据之外。
简而言之:我更喜欢一个协会:)
最佳答案
这个功能实际上在 Mongoid 上并不存在,甚至在 Master 上也不存在,而且 Mongoid 3.0 中也没有计划
提出一些功能请求。如果这是个好主意,Mongoid 社区非常愿意添加一些新功能。对我来说这是个好主意。
关于ruby-on-rails - Mongoid 关联的自定义键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8851598/