gpt4 book ai didi

ruby-on-rails - 在 ruby​​ 中只访问 BSON::ObjectId 的值

转载 作者:可可西里 更新时间:2023-11-01 09:28:26 30 4
gpt4 key购买 nike

我正在开发一个由 Mongodb 支持的 ruby​​/rails 应用程序(使用 Mongoid)。在 Rails 应用程序的上下文中,一切都完美无缺,但我们也在访问 Rails 环境之外的对象,在这种情况下,我无法获取对象的 ID 以除哈希格式以外的任何形式返回:

{"$oid"=>"4e0005b78ba4db213500001f"}

我发现我看到了,因为我得到的值不仅仅是一个 id 字符串,而是 BSON::ObjectId 类型的值。除了需要 rails 环境之外,我还尝试在执行此工作的文件中明确要求 bson:

require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require "bson"

我需要将值简单地作为包含 id 的字符串获取,这似乎是其他地方的默认设置,但在这种情况下。奇怪的是,这种行为只发生在我的开发环境中(我团队中的其他人没有这个问题)。

必要的免责声明,我是 Mongodb 的新手,所以可能会遗漏一些真正明显的东西。

谢谢!

最佳答案

您可以尝试对该对象调用 to_s。在 irb 中:

ruby-1.9.2-p180 > p = Project.last #=> #<Project _id: 4e00e77d399a46759d000002, _type: nil, version: 1, created_at: 2011-06-21 18:48:34 UTC, updated_at: 2011-06-21 18:48:34 UTC, name: "Testing MongoDB", client_id: 3, client_name: nil, group_id: 35, requestor_id: 14, requestor_name: "Test Client User", requestor_phone: "", creator_id: 2, creator_name: "Some Guy", manager_id: 23, manager_name: "Some Other Guy", manager_phone: "", manager_email: "", active: true, status: "open", default_hourly_cost: "0.0", default_hourly_charge: "0.0", default_material_markup: "0.35", add_email_internal: "", add_email_client: "", client_po_number: "", client_ticket_number: "", date_requested: nil, date_requested(1i): "2011", date_requested(2i): "6", date_requested(3i): "21">
ruby-1.9.2-p180 > p.id.to_s #=> "4e00e77d399a46759d000002"

如果这不起作用,你能发布你的 environment.rb 吗?

关于ruby-on-rails - 在 ruby​​ 中只访问 BSON::ObjectId 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6429893/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com