【问题标题】:Rails association sort with case agnosticRails 关联排序与大小写无关
【发布时间】:2014-03-28 07:00:40
【问题描述】:

我有一个 have_many 关联,我想对它进行排序,以便案例不可知。目前它看起来像这样:

class Account < ActiveRecord::Base

  has_many :studies, order: :name

先对大写字母排序,再对小写字母排序,结果如下:

 DP
 De

我希望排序不区分大小写,即

 De
 DP

我已经能够在模型方法中做到这一点,例如,

 def studies
   account.studies.sort_by! { |s| s.name.downcase }
 end

是否可以使用 order: 对 has_many 关联进行排序,以使结果与大小写无关?

【问题讨论】:

    标签: ruby-on-rails ruby sorting associations


    【解决方案1】:

    如果您使用的是 mysql,这应该可以工作

    has_many :studies, order: 'lower(name)'
    

    lower是一个mysql函数,相当于ruby中的downcase。 因此,由于在 Rails 中您可以使用 SQL 片段自定义 order 子句,因此您基本上可以使用任何您想要的数据库供应商特定功能。

    【讨论】:

    • 嗨,这可能很好地解决了问题 - 但解释原因是个好主意。请记住,总 n00bs 很可能会找到这个问题/答案 - 所以快速解释被认为是好的形式:)
    • 你去。感谢您的提醒。
    猜你喜欢
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多