【问题标题】:Update specific record model on Heroku更新 Heroku 上的特定记录模型
【发布时间】:2023-04-02 05:57:01
【问题描述】:

我在本地更新了我的用户模型,并将其推送到我的 heroku 环境中。

但是现在我遇到了老用户没有所有新用户都拥有的字段的问题。

heroku console 我如何专门为缺少必要字段的单个用户添加字段?我也在使用mongoid

【问题讨论】:

    标签: ruby-on-rails ruby model migration mongoid


    【解决方案1】:

    有多种选择:

    1. 如果您不需要查询这个新字段,那么只需在该字段中添加一个:default => whatever 值。这将为新实例设置默认值,并将默认值提供给没有该字段的现有模型。

    2. 如果您确实需要对该字段进行查询,并且希望为所有没有该字段的现有文档添加默认值,则可以使用:$exists query 查找它们并使用update_all 修复它们:

      M.where(:missing_field.exists => false).update_all(:missing_field => desired_value)
      

      这将在后台更新:$set => { :missing_field => desired_value },因此它只会修改:missing_field

    3. 如果只有一个并且您知道它是哪一个,那么只需抓取它,更新值并保存它:

      m = M.find(known_id)
      m.missing_value = desired_value
      m.save
      
    4. 如果您想直接与数据库对话,请在集合中使用 findupdate_all

      M.collection.find(:missing_field => { :$exists => false }).update_all(:$set => { :missing_field => desired_value })
      M.collection.find(:_id => known_id).update(:$set => { :missing_field => desired_value })
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多