【发布时间】:2023-04-02 05:57:01
【问题描述】:
我在本地更新了我的用户模型,并将其推送到我的 heroku 环境中。
但是现在我遇到了老用户没有所有新用户都拥有的字段的问题。
从heroku console 我如何专门为缺少必要字段的单个用户添加字段?我也在使用mongoid。
【问题讨论】:
标签: ruby-on-rails ruby model migration mongoid
我在本地更新了我的用户模型,并将其推送到我的 heroku 环境中。
但是现在我遇到了老用户没有所有新用户都拥有的字段的问题。
从heroku console 我如何专门为缺少必要字段的单个用户添加字段?我也在使用mongoid。
【问题讨论】:
标签: ruby-on-rails ruby model migration mongoid
有多种选择:
如果您不需要查询这个新字段,那么只需在该字段中添加一个:default => whatever 值。这将为新实例设置默认值,并将默认值提供给没有该字段的现有模型。
如果您确实需要对该字段进行查询,并且希望为所有没有该字段的现有文档添加默认值,则可以使用:$exists query 查找它们并使用update_all 修复它们:
M.where(:missing_field.exists => false).update_all(:missing_field => desired_value)
这将在后台更新:$set => { :missing_field => desired_value },因此它只会修改:missing_field。
如果只有一个并且您知道它是哪一个,那么只需抓取它,更新值并保存它:
m = M.find(known_id)
m.missing_value = desired_value
m.save
如果您想直接与数据库对话,请在集合中使用 find 和 update_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 })
【讨论】: