【发布时间】:2014-08-10 11:12:10
【问题描述】:
快速提问:如何在使用 rails 创建模型时为特定列指定排序规则?
我在 rails API 文档中没有找到任何选项,但我认为显式声明某些属性的排序规则非常重要。
假设默认排序规则是utf8_unicode_ci。但是在创建用户模型时,密码字段的排序规则应该是utf8_bin。
所以,当使用这样的导轨时
rails g model Users username:string password:string
您不能指定密码以使用utf8_bin 排序规则。
有什么办法吗?
编辑: 生成的 SQL 应该是这样的:
CREATE TABLE `user` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Unique ID',
`username` VARCHAR(32) NOT NULL COMMENT 'Nick/username',
`password` VARCHAR(32) COLLATE utf8mb4_bin COMMENT 'Encoded password',
PRIMARY KEY(`id`),
INDEX(`username`)
);
我不在乎您是否不能直接通过命令执行此操作,并且您必须修改 db/timestamp_create_users.rb 文件。但重点是能够使用 rails 迁移。
【问题讨论】:
-
也许这对你有帮助? stackoverflow.com/questions/7907210/…
-
没有。我的数据库设置为使用 utf8_unicode_ci 所以这是默认值,但问题是我想设置 some 表的 some 列以使用不同的排序规则。 (另外,mysql2 gem 与 utf8mb4 存在问题,但这是另一回事)
-
检查该问题的第一个答案。我认为这是你的情况。
-
嗨!不,正如我之前告诉你的那样,情况并非如此,因为这个问题是针对整个数据库的。我的意思是,您告诉我在 my.cfg 中设置数据库的配置,我希望其中一列的排序规则与其他列不同。我不知道您是否阅读了问题中的 SQL 示例,但这不是该答案所做的;)
-
嗯,我认为 rails 会有类似的方式在列级别设置排序规则,对此感到抱歉。请参阅我的答案。
标签: mysql ruby-on-rails