首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在迁移中加载Hanami模型?

如何在迁移中加载Hanami模型?
EN

Stack Overflow用户
提问于 2017-10-03 01:43:38
回答 1查看 377关注 0票数 2

我想改变表格中表格的结构,我需要用旧字段的值来回填一些新的字段。因此,我想在迁移中使用存储库。但是,看来我需要加载Hanami模型才能使用存储库,因为Hanami在运行迁移时没有加载它。

所以,现在我有一个:

代码语言:javascript
复制
require_relative '../../lib/my_app/repositories/entity_repository'
require_relative '../../lib/my_app/entities/my_entity'

Mutex.new.synchronize do
  Hanami::Model.load!
end

Hanami::Model.migration do
  change do
    def backfill_data!
      repo = EntityRepository.new

      repo.all.map do |entity|
        repo.update entity.id, new_field_as_date: Date.new(entity.old_field)
      end
    end

    backfill_data!
  end
end

但是当运行这个迁移时,我得到

代码语言:javascript
复制
bundler: failed to load command: hanami (/Users/user/.rbenv/versions/2.4.1/bin/hanami)
Hanami::Model::Error: key not found: :person
# which is an association with the entity mentioned on the code

所以,我现在不知道该怎么做。最大的问题是,如何迁移关于Hanami迁移的数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-05 14:43:42

我不知道这个具体的问题,但是我强烈反对您在迁移中使用存储库。因为存储库与数据库表的当前架构紧密相关,因此如果将来运行相同的迁移,它可能无法工作。

您应该直接使用数据库设施。这将保证迁移始终正常工作:

代码语言:javascript
复制
Hanami::Model.migration do
  up do
    run "UPDATE users SET last_login_at=(last_login_at - INTERVAL '1 day')"
  end

  down do
  end
end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46536033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档