6

这可行,但看起来有点难看:

s = :shop
s.to_s.pluralize.to_sym   # => :shops

有没有更好的方法来复数 a Symbol

4

3 回答 3

9

您可以将 a 复数String,它表示实际文本。Symbols 有点抽象。

所以,根据定义,不。但是,也许您可​​以打开 Symbol 类定义并添加:

class Symbol
  def pluralize
    to_s.pluralize.to_sym
  end
end

然后,您可以调用:

:shop.pluralize # => :shops
于 2010-12-12T23:54:48.097 回答
4

不,就是这样。

于 2010-12-12T23:51:39.647 回答
3

如果您愿意更改 Ruby 的类,那么这很有效:

class Symbol
  def pluralize
    self.to_s.pluralize.to_sym
  end
end

我还没有找到更优雅的解决方案,虽然我怀疑如果有,它可能只是 Rails 实现了类似于我上面的东西。

于 2010-12-12T23:54:28.737 回答