【发布时间】:2012-08-16 09:07:05
【问题描述】:
我有以下在mysql下通过的测试(使用FactoryGirl):
test "order by title" do
@library = create(:drawing_library, title: 'Accessories')
@drawing = create(:drawing, drawing_library: @library, title: 'Test Drawing')
create(:drawing, drawing_library: @library, title: 'z')
create(:drawing, drawing_library: @library, title: 'm')
create(:drawing, drawing_library: @library, title: 'b')
str = ''
@library.drawings.each do |dwg|
str += dwg.title
end
assert_equal 'bmTest Drawingz', str
end
绘图模型是:
class Drawing < ActiveRecord::Base
belongs_to :drawing_library
default_scope order: :title
..
end
在 postgresql 下,这个测试现在失败了:
<"bmTest Drawingz"> expected but was
<"Test Drawingbmz">.
这似乎是因为“测试绘图”中的 T 是大写的。如果我将其更改为“测试绘图”,则测试通过。
有没有办法让default_scope order 不区分大小写?
【问题讨论】:
-
您可能还需要注意排序规则设置和语句选项。如果值在其他方面相同,某些排序规则只会将大小写用作决胜局。
标签: ruby-on-rails ruby postgresql activerecord rails-activerecord