Не могу удалить новую строку - PullRequest
0 голосов
/ 23 августа 2011

У меня есть модель, у которой есть уникальный токен, который нужно менять при каждом сохранении модели.

Я использую before_filter для смены токена, и он работает, проблема в следующем:

class Confirmation < ActiveRecord::Base
  attr_accessible :item_id, :item_type

  before_save :define_token

  def to_param
    token
  end

  private
    def define_token
      str = ActiveSupport::SecureRandom.base64(32).gsub("/","_").gsub(/=+$/,"")
      self.token = Util.secure_hash("#{str} - #{Time.now.utc.to_s} - #{item_id}")
    end
end

когда я смотрю сгенерированный токен, он выдает мне случайную строку с \ n в конце.

Я пытался добавить эту строку:

def define_token
  str = ActiveSupport::SecureRandom.base64(32).gsub("/","_").gsub(/=+$/,"")
  str = Util.secure_hash("#{str} - #{Time.now.utc.to_s} - #{item_id}")
  self.token = str.gsub("\n", "n")
end

но все равно не работает, как я могу удалить новую строку в конце?

1 Ответ

3 голосов
/ 23 августа 2011

Во-первых, предполагая, что символ новой строки является ложным, я бы выяснил, откуда он пришел, и удалил его там.Но если по какой-то причине это не вариант, следующий gsub будет работать:

self.token = str.gsub(/\n$/, "")

Это удалит только новую строку, если это последняя запись в строке.Чтобы удалить все новые строки, используйте:

self.token = str.gsub(/\n/, "")

Еще проще, метод rstrip удалит конечные пробелы из строки:

self.token = str.rstrip
...