我们的一个字段需要区分大小写。我们可以编写一个迁移来更改排序规则,这很好,但是这种更改没有反映在schema.rb中。例如,当运行测试时,它会产生问题,并且克隆的测试数据库将没有我们为该字段所需的排序规则。
我们使用mysql。
我一直在寻找一种方法来实现这件事,但没有结果。
我设法在github上找到了这个,但不确定这是如何实现的https://github.com/cantino/huginn/blob/db792cdd82eb782e98d934995964809d9e8cb77d/db/schema.rb
发布于 2015-11-25 17:13:45
我认为没有任何“官方”方法(由Rails或ActiveRecord宝石提供)来完成这种转储。按照git历史记录,在Huginn回购本身上,您可以找到实现此转储所需的代码。看看这个提交:https://github.com/cantino/huginn/commit/db792cdd82eb782e98d934995964809d9e8cb77d
当前最相关的代码是:字符集/main.rb
因此,如果您需要这个特性,您可能需要将这个扩展复制/粘贴到项目中。
更新
我对Huginn回购(git历史和问题)做了更深入的回顾,正如您在这个评论中所读到的那样,这个功能被提取到一个gem:https://github.com/kamipo/activerecord-mysql-awesome中。
发布于 2016-04-08 09:23:45
正如@house9 9的注释中提到的,您可以使用structure.sql代替。将其添加到项目的application.rb中:
config.active_record.schema_format = :sql然后运行bundle exec rake db:structure:dump生成实际的SQL结构。这保留了字符集和排序规则(理想情况下,应该在schema.rb中,但可惜)。
从本质上说,“结构”不如“模式”那么可移植,但对于所有团队成员和环境来说,使用相同的数据库和版本通常是件好事。
https://stackoverflow.com/questions/33920084
复制相似问题