从序列化 array.join(', ') 中删除最后一个逗号?

Remove last comma from serialized array.join(', ')?

我想删除数组中的最后一个逗号。例如,self.committed.join(', ').titleize 产生 "Sun, Mon, Tue, Wed, Thu, Fri, Sat,".

我不知道答案是否以某种方式删除了数组 ["sun", "mon", "tue", "wed", "thu", "fri", "sat", ""] 末尾的空 "" 这样我就可以使用 to_sentence 而它不会出来的样子是这样的"Sun, Mon, Tue, Wed, Thu, Fri, Sat, And"

或者 join 是否有办法防止额外的逗号?

型号

serialize :committed, Array

db

t.text     "committed",       default: "---\n- sun\n- mon\n- tue\n- wed\n- thu\n- fri\n- sat\n"

我不想更改 serializedb,但我愿意将其作为最后的手段。

不清楚为什么数组的最后一个元素是空字符串,但是很容易跳过:

self.committed[0..-2].to_sentence.titleize

或:

self.committed.reject(&:blank?).to_sentence.titleize

后者将跳过所有空白元素,而前者将跳过最后一个元素,无论其内容如何。

如果你想在调用to_sentence之前将单词单独大写(以避免"and"被大写),只需使用map

self.committed[0..-2].map(&:titleize).to_sentence