Activerecord属性字符串反转然后顺序

时间:2013-03-15 21:14:22

标签: mysql ruby-on-rails rails-activerecord

民间,

我的模型中有一个字符串属性(名称),其中包含以下格式的数据:

  • dan01
  • joel02
  • ken01
  • raol01

我想要做的是通过名称进行查询和排序,但我希望按顺序使用相反顺序的字符串,即 dan01 应视为< strong> 10nad ,想知道在rails中执行此操作的最佳方法是什么。

2 个答案:

答案 0 :(得分:1)

这取决于您正在使用的数据库,因为您需要在数据库层执行此操作以获得性能。实际上,我认为你可能想重新考虑一下你在这里想要实现的目标,因为我怀疑这是你正在寻找的答案。 -Jedi Mind Meld -

假设您正在使用MySQL:如果您的模型为Person,则您的查询将为Person.order('REVERSE(name)')

你可以用ruby,ala Person.all.sort_by{|p| p.name.reverse}来做,但我真的不建议这样做。

在不知道你正在做什么的完整背景的情况下,我会猜测你想要存储第二个整数列,这是你的排序顺序或类似的东西。

答案 1 :(得分:0)

我面前没有MySQL数据库,但您应该可以执行以下操作:

Foo.order('REVERSE(name)')

上述内容适用于Postgres,也可以根据http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_reverse在MySQL中使用。