Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
1a36be39
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1a36be39
编写于
4月 08, 2015
作者:
A
Andrey Voronkov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix uniqueness validation with out of range value
上级
0a120a81
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
31 addition
and
0 deletion
+31
-0
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+4
-0
activerecord/lib/active_record/validations/uniqueness.rb
activerecord/lib/active_record/validations/uniqueness.rb
+2
-0
activerecord/test/cases/validations/uniqueness_validation_test.rb
...cord/test/cases/validations/uniqueness_validation_test.rb
+25
-0
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
1a36be39
*
Uniqueness validation with out of range value fixed
*Andrey Voronkov*
*
MySQL:
`:charset`
and
`:collation`
support for string and text columns.
Example:
...
...
activerecord/lib/active_record/validations/uniqueness.rb
浏览文件 @
1a36be39
...
...
@@ -76,6 +76,8 @@ def build_relation(klass, table, attribute, value) #:nodoc:
klass
.
connection
.
case_sensitive_comparison
(
table
,
attribute
,
column
,
value
)
end
klass
.
unscoped
.
where
(
comparison
)
rescue
RangeError
klass
.
none
end
def
scope_relation
(
record
,
table
,
relation
)
...
...
activerecord/test/cases/validations/uniqueness_validation_test.rb
浏览文件 @
1a36be39
...
...
@@ -34,6 +34,19 @@ class TopicWithUniqEvent < Topic
validates
:event
,
uniqueness:
true
end
class
BigIntTest
<
ActiveRecord
::
Base
PG_MAX_INTEGER
=
2147483647
self
.
table_name
=
'cars'
validates
:engines_count
,
uniqueness:
true
,
inclusion:
{
in:
0
..
PG_MAX_INTEGER
}
end
class
BigIntReverseTest
<
ActiveRecord
::
Base
PG_MAX_INTEGER
=
2147483647
self
.
table_name
=
'cars'
validates
:engines_count
,
inclusion:
{
in:
0
..
PG_MAX_INTEGER
}
validates
:engines_count
,
uniqueness:
true
end
class
UniquenessValidationTest
<
ActiveRecord
::
TestCase
fixtures
:topics
,
'warehouse-things'
...
...
@@ -86,6 +99,18 @@ def test_validates_uniqueness_with_validates
assert
t2
.
errors
[
:title
]
end
if
current_adapter?
:PostgreSQLAdapter
def
test_validate_uniqueness_when_integer_out_of_range
entry
=
BigIntTest
.
create
(
engines_count:
(
BigIntTest
::
PG_MAX_INTEGER
+
1
))
assert_equal
entry
.
errors
[
:engines_count
],
[
'is not included in the list'
]
end
def
test_validate_uniqueness_when_integer_out_of_range_show_order_does_not_matter
entry
=
BigIntReverseTest
.
create
(
engines_count:
(
BigIntTest
::
PG_MAX_INTEGER
+
1
))
assert_equal
entry
.
errors
[
:engines_count
],
[
'is not included in the list'
]
end
end
def
test_validates_uniqueness_with_newline_chars
Topic
.
validates_uniqueness_of
(
:title
,
:case_sensitive
=>
false
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录