【问题标题】:Custom keys for Mongoid associationMongoid 关联的自定义键
【发布时间】:2012-01-13 13:51:35
【问题描述】:

我需要将两个模型与一个简单的 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。

我可以只进行查询并将其粘贴到从消息中查找“关联”报告的方法中,反之亦然……如果可能的话,我宁愿让它们成为实际的关联。

我可以强制报告接收过程搜索并匹配关联的对象...但是当它有点多余并且与它无关时,我宁愿不把这个责任放在那里除了验证和保存这些数据。

简而言之:我更喜欢关联:)

【问题讨论】:

  • +1 积极处理反对意见 :-)
  • 呵呵,我之前在网上问过;)
  • @MartinWestin 你解决了吗?我有完全相同的问题
  • 不,我最终作弊了,添加了一个代理方法,其关联名称确实返回了该模型的自定义位置(实际上是一个 Criteria 对象,但是...)。
  • 在 mongoid project.o 上做一些功能请求

标签: ruby-on-rails mongoid


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    相关资源
    最近更新 更多