【问题标题】:Activerecord attribute string reversal and then orderActiverecord属性字符串反转再排序
【发布时间】:2013-03-15 21:14:22
【问题描述】:

伙计们,

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

  • dan01
  • 乔尔02
  • ken01
  • raol01

我想做的是按 name 查询和排序,但我希望 order by 以相反的顺序使用字符串,即 dan01 应该被视为 10nad,想知道在 Rails 中最好的方法是什么。

【问题讨论】:

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


    【解决方案1】:

    这取决于您使用的数据库,因为您需要在数据库层执行此操作以提高性能。实际上,我认为您可能想重新考虑您在这里实际尝试完成的工作,因为我怀疑这是否真的是您正在寻找的答案。 -Jedi Mind Meld-

    假设您使用的是 MySQL:如果您的模型是 Person,那么您的查询将是 Person.order('REVERSE(name)')

    你可以在 ruby​​ 中做到这一点,ala Person.all.sort_by{|p| p.name.reverse} 但我真的不建议这样做。

    在不知道您正在做什么的完整上下文的情况下,我会冒险猜测您想要存储第二个整数列,该列是您的排序顺序或类似的东西。

    【讨论】:

      【解决方案2】:

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

      Foo.order('REVERSE(name)')
      

      根据http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_reverse,以上在 Postgres 中工作,也应该在 MySQL 中工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-23
        • 1970-01-01
        • 2019-12-13
        • 1970-01-01
        • 2022-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多