gpt4 book ai didi

ruby-on-rails - Rails 唯一性 => 真正的编码问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:55:38 27 4
gpt4 key购买 nike

在 Rails 3.0.12 (Ruby 1.8.7) 中使用 UTF 字符时,我遇到了 Rails 唯一性验证器的问题。

这是我的小测试:

正确:

name = "dave"
count = User.where(:name => name).count
u = User.new(:name => name, :gender => "Male")
puts "Current: #{count} / Valid: #{u.valid?} / Errors: #{u.errors.to_a.to_sentence}"

输出:当前:1/有效:false/错误:名称已被占用

SQL (0.2ms)  SELECT COUNT(*) FROM `users` WHERE `users`.`name` = 'dave'
SQL (0.1ms) SELECT 1 FROM `users` WHERE (`users`.`name` = BINARY 'dave') LIMIT 1

不正确:

name = "angélique"
count = User.where(:name => name).count
u = User.new(:name => name, :gender => "Male")
puts "Current: #{count} / Valid: #{u.valid?} / Errors: #{u.errors.to_a.to_sentence}"

输出:当前:3/有效:true/错误:

SQL (0.1ms)  SELECT COUNT(*) FROM `users` WHERE `users`.`name` = 'angélique'
SQL (0.1ms) SELECT 1 FROM `users` WHERE (`users`.`name` = BINARY 'angélique') LIMIT 1

似乎 where 子句使用了正确的编码并找到了结果,但对存在性验证器的检查却没有。

有什么办法可以解决这个问题吗?

最佳答案

我认为您的应用很可能使用的是 UTF-8,但您的数据库不是:

http://guides.rubyonrails.org/getting_started.html#configuration-gotchas

该指南在本页前面部分包含针对 MySQL 和 PostgreSQL 执行此操作的示例。

关于ruby-on-rails - Rails 唯一性 => 真正的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621904/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com