为自己打电话超级

时间:2011-08-09 14:25:46

标签: ruby

我有一个第三方gem,其扩展名为String类:

class String
  def to_url
    self.gsub /\s+/, '-'
  end
end

我让我的应用尝试扩展String类:

class String
  def to_url
    Russian.translit self
    super
  end
end

如何从我的应用程序调用super(替换空格并进行音译)?我的代码执行super,但跳过Russian.translit self

3 个答案:

答案 0 :(得分:3)

没有超级电话。你应该使用alias_method

class String
  alias_method :old_to_url, :to_url
  def to_url
    Russian.translit(self).old_to_url
  end
end

答案 1 :(得分:0)

我认为你的Russian.translit self工作正常,你只是没有使用结果。如果俄罗斯有这样的方法,你应该使用类似Russian.translit! self的东西。

答案 2 :(得分:0)

耶!我找到了为super调用self的方法(如果有super)。无法分配self,但可以替换它的数据。

class String
  def to_url
    self.replace Russian.translit(self)
    super
  end
end