Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
b8f86ae2
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,发现更多精彩内容 >>
提交
b8f86ae2
编写于
2月 21, 2016
作者:
R
Ryuta Kamizono
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
The BINARY Operator is only needed for string columns
Follow up to #13040.
上级
fa344194
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
13 addition
and
3 deletion
+13
-3
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
...tive_record/connection_adapters/abstract_mysql_adapter.rb
+3
-3
activerecord/test/cases/adapters/mysql2/case_sensitivity_test.rb
...ecord/test/cases/adapters/mysql2/case_sensitivity_test.rb
+9
-0
activerecord/test/schema/mysql2_specific_schema.rb
activerecord/test/schema/mysql2_specific_schema.rb
+1
-0
未找到文件。
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
浏览文件 @
b8f86ae2
...
...
@@ -608,10 +608,10 @@ def primary_keys(table_name) # :nodoc:
end
def
case_sensitive_comparison
(
table
,
attribute
,
column
,
value
)
if
value
.
nil?
||
column
.
case_sensitive?
super
else
if
!
value
.
nil?
&&
column
.
collation
&&
!
column
.
case_sensitive?
table
[
attribute
].
eq
(
Arel
::
Nodes
::
Bin
.
new
(
Arel
::
Nodes
::
BindParam
.
new
))
else
super
end
end
...
...
activerecord/test/cases/adapters/mysql2/case_sensitivity_test.rb
浏览文件 @
b8f86ae2
...
...
@@ -51,4 +51,13 @@ def test_case_sensitive_comparison_for_cs_column
cs_uniqueness_query
=
queries
.
detect
{
|
q
|
q
.
match
(
/string_cs_column/
)
}
assert_no_match
(
/binary/i
,
cs_uniqueness_query
)
end
def
test_case_sensitive_comparison_for_binary_column
CollationTest
.
validates_uniqueness_of
(
:binary_column
,
case_sensitive:
true
)
CollationTest
.
create!
(
binary_column:
'A'
)
invalid
=
CollationTest
.
new
(
binary_column:
'A'
)
queries
=
assert_sql
{
invalid
.
save
}
bin_uniqueness_query
=
queries
.
detect
{
|
q
|
q
.
match
(
/binary_column/
)
}
assert_no_match
(
/\bBINARY\b/
,
bin_uniqueness_query
)
end
end
activerecord/test/schema/mysql2_specific_schema.rb
浏览文件 @
b8f86ae2
...
...
@@ -33,6 +33,7 @@
create_table
:collation_tests
,
id:
false
,
force:
true
do
|
t
|
t
.
string
:string_cs_column
,
limit:
1
,
collation:
'utf8_bin'
t
.
string
:string_ci_column
,
limit:
1
,
collation:
'utf8_general_ci'
t
.
binary
:binary_column
,
limit:
1
end
ActiveRecord
::
Base
.
connection
.
execute
<<-
SQL
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录