如何在Ruby on Rails中为(in)definate文章转换字符串以进行AMA alphabetization

时间:2018-03-19 16:10:35

标签: ruby-on-rails

我不知道更好的方式来提出这个问题,这可能就是我为什么要努力寻找答案的原因。

我想使用AMA字母顺序按字母顺序排列歌曲标题列表,其中(in)definate文章将转换为最后放置描述逗号的文章。例如:

"The Way Forward" => "Way Forward, The"
"The Long and Winding Road" => "Long and Winding Road, The"
"A Late Night Alone" => "Late Night Alone, A"

如果必须的话,我可以写一个为我做这个的方法,但有一些有用的方法,比如PluralizeTitleize以及Humanize,我想知道是否有这种方法已经存在。

1 个答案:

答案 0 :(得分:0)

确定。感谢您发表评论Maciej NędzaAsh。所以似乎答案是否定的,没有预先建立的方法来重新排序字符串,以""," A"或" An"在Ruby on Rails'库。

因此,如果有人发现这篇文章寻找答案,我会发布我用来解决此问题的代码。

模型Song包含歌曲标题的字符串title,另一列sort_order用于保存修改后的标题以按字母顺序排序。

# app/models/song.rb
class Song < ApplicationRecord
  before_save :set_sort_order

....

  private
    def set_sort_order
      unless title.starts_with?("The ", "A ", "An ")
        self.sort_order = title
      else 
        word = title.partition(" ").first
        self.sort_order = title["#{word} ".size..-1].concat(", #{word}")
      end
    end
end