ruby on rails'按字母顺序排序的方法不会在“a”之前放置单词边界?

时间:2017-05-12 15:05:01

标签: ruby-on-rails ruby postgresql heroku sqlite

我认为这与Postgresql有关,因为在本地的sqlite3数据库中,我没有看到这种行为。

我正在使用postgresql DB创建一个Ruby on Rails 5应用程序。我正在使用c9.io,而不是Hartl的Rails教程,因此我在本地使用sqlite3 DB进行开发,然后我将它推到Heroku进行制作。我知道,在本地拥有不同的数据库并不是一个好主意。但我不认为我可以在c9上运行postgresql。它在那里,但我不认为我有权限。安美居...

假设我有一个班级'Book',有一个字段'title'。我有4条关于这些标题的记录:

"africa cloud"
"africa rain"
"african cloud"
"african rain"

在Heroku的rails控制台中,如果我要求按标题排序:

@books = Book.all.order(:title)
@books.each do |b|
  puts b.title
end

我得到这个,不正确,订单:

africa cloud
african cloud
african rain
africa rain

它将字边界视为甚至不存在。谁按字母顺序排序?但是如果我把标题拿出来,把它们放到自己的数组中,然后对它们应用.sort方法,我得到一个正确排序的列表:

@titles = []
@books.each do |b|
  @titles << b.title
end
@titles.sort.each do |t|
  puts t
end

africa cloud
africa rain
african cloud
african rain

我觉得ruby的方法“排序”正确,但postgresql的rails方法“命令”在某种程度上是关闭的,就像正则表达式的规则是不同的。正如我之前所说,这种行为不会出现在使用sqlite3数据库的本地设置中。

这就是背景。我想知道对行为的解释,并且我将知道如何覆盖此行为以在生产服务器上获得正确的按字母顺序排列的列表。

0 个答案:

没有答案