【问题标题】:Get Keys of MongoMapper Model获取 MongoMapper 模型的密钥
【发布时间】:2011-07-20 04:24:29
【问题描述】:

假设以下模型:

class Article
  include MongoMapper::Document

  key :name, String
  key :body, String
end

我可以将模型的键放入数组或哈希中吗?

【问题讨论】:

    标签: ruby mongomapper


    【解决方案1】:

    Article.keys 将为您提供关键对象的关键名称哈希。如果您只想要键名,请尝试Article.keys.keys

    ruby-1.9.2-p0 :011 > Article.keys
     => { 
      "_id"  => #<MongoMapper::Plugins::Keys::Key:0x000001041e5d48 @type=ObjectId, @name="_id", @options={}, @default_value=nil>,
      "name" => #<MongoMapper::Plugins::Keys::Key:0x00000104013100 @type=String, @name="name", @options={}, @default_value=nil>,
      "body" => #<MongoMapper::Plugins::Keys::Key:0x00000104011b20 @type=String, @name="body", @options={}, @default_value=nil>
    }
    ruby-1.9.2-p0 :012 > Article.keys.keys
     => ["_id", "name", "body"]
    

    但请注意,如果您动态设置任何未在模型中声明的键,或者您加载的对象具有模型中没有的额外键,它们将显示在键哈希中。见https://github.com/jnunemaker/mongomapper/issues/195

    【讨论】:

    • 啊,从对象中意外动态加载键让我们沮丧了好几个小时!有没有办法将 MM 重置为模型中定义的内容?
    • Crashalot:没有支持的方式,但是如果你想尝试热修复它,上面解释的密钥哈希是 MM 使用的。但是,如果您只是取消设置密钥并重新启动您的应用程序,一切都会好起来的,您不必对应用程序进行热修复(如 MM 邮件列表中所建议的那样)。
    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多