ruby-on-rails - Mongoid 关联的自定义键

标签 ruby-on-rails mongoid

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

相关文章:

ruby-on-rails - 将每日销售额分配到创建日期

ruby - 没有填充 MongoDB/Mongoid 和 Rails 3 的 DateTime

ruby-on-rails - 如何获取rails中每个用户的最新帖子

javascript - 如何在 helper 中使用 unobustrive JS 重构 link_to_function ?

ruby-on-rails-3 - 具有多个字段的 Mongoid order_by 导致意外

ruby-on-rails - 从 mongoid 中的文档中排除字段?

ruby-on-rails - 使用新的Rails/MongoID应用程序配置RSpec

ruby-on-rails - 使用 erb 渲染一个变量

ruby-on-rails - 在 devise_invitable 中覆盖邮件程序?