【发布时间】:2012-07-11 15:59:06
【问题描述】:
我正在尝试找出一个可以在我的迁移中使用的良好验证,这将要求用户电子邮件地址具有不区分大小写的唯一性。简而言之,我想要像validate :email, :uniqueness => {:case_sensitive => false} 这样的东西,而不必将所有东西都转换为使用Rails 或ActiveRecord。我可以通过正则表达式运行电子邮件,但我不喜欢那种解决方案。
我发现一条评论[1]说你可以使用validates_unique(:email){ |ds| ds.opts[:where].args.map! { |x| Sequel.function(:lower, x)}; ds}
但我不明白该代码在做什么,当我不知道 ds 对象是什么或发生了什么事情时,我不想使用该代码(为什么 map!,postgresql 有 @ :lower 的 987654326@? ... 可能,但我就是不知道。)
[1]http://comments.gmane.org/gmane.comp.lang.ruby.sequel/6447
所以我需要回答以下两件事之一:
1) 如何在纯 Sequel.migration(无 ActiveRecord,无 Rails)中执行不区分大小写的唯一性验证?
- 或 -
2)如果我在网上找到的代码 sn-p 确实是我想要的,它有什么作用以及它是如何工作的? (ds 对象是什么,这个验证对我的数据库有什么作用?)
【问题讨论】:
-
您似乎对验证和索引的工作方式以及迁移的作用感到困惑。
-
不,我正在尝试添加数据库约束。你可以在我的
Sequel.migration对象中做到这一点(我已经有了一些)。我只是不太确定该怎么做。
标签: ruby migration email-validation sequel