【发布时间】:2013-03-15 21:14:22
【问题描述】:
伙计们,
我的模型中有一个字符串属性(name),其中包含以下格式的数据:
- dan01
- 乔尔02
- ken01
- raol01
我想做的是按 name 查询和排序,但我希望 order by 以相反的顺序使用字符串,即 dan01 应该被视为 10nad,想知道在 Rails 中最好的方法是什么。
【问题讨论】:
标签: mysql ruby-on-rails rails-activerecord
伙计们,
我的模型中有一个字符串属性(name),其中包含以下格式的数据:
我想做的是按 name 查询和排序,但我希望 order by 以相反的顺序使用字符串,即 dan01 应该被视为 10nad,想知道在 Rails 中最好的方法是什么。
【问题讨论】:
标签: mysql ruby-on-rails rails-activerecord
这取决于您使用的数据库,因为您需要在数据库层执行此操作以提高性能。实际上,我认为您可能想重新考虑您在这里实际尝试完成的工作,因为我怀疑这是否真的是您正在寻找的答案。 -Jedi Mind Meld-
假设您使用的是 MySQL:如果您的模型是 Person,那么您的查询将是 Person.order('REVERSE(name)')
你可以在 ruby 中做到这一点,ala Person.all.sort_by{|p| p.name.reverse} 但我真的不建议这样做。
在不知道您正在做什么的完整上下文的情况下,我会冒险猜测您想要存储第二个整数列,该列是您的排序顺序或类似的东西。
【讨论】:
我面前没有 MySQL 数据库,但您应该可以执行以下操作:
Foo.order('REVERSE(name)')
根据http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_reverse,以上在 Postgres 中工作,也应该在 MySQL 中工作。
【讨论】: