无法删除新行

时间:2011-08-23 19:04:07

标签: ruby-on-rails-3 gsub

我有一个模型,它有一个唯一的标记,每次保存模型时都要更改。

我正在使用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 个答案:

答案 0 :(得分:3)

首先,假设换行是100%假的,我会弄清楚它来自何处,然后将其删除。但如果由于某种原因这不是一个选项,以下gsub将起作用:

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

如果它是字符串中的最后一个条目,那么只会删除换行符。要删除所有换行符,请使用:

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

更简单的是,rstrip方法将从字符串中删除尾随空格:

self.token = str.rstrip