【发布时间】:2011-05-24 09:55:29
【问题描述】:
这可行,但看起来有点难看:
s = :shop
s.to_s.pluralize.to_sym # => :shops
有没有更好的方法来复数 Symbol ?
【问题讨论】:
-
不,因为符号不是用来改变的(它们是不可变的)。
标签: ruby-on-rails ruby pluralize
这可行,但看起来有点难看:
s = :shop
s.to_s.pluralize.to_sym # => :shops
有没有更好的方法来复数 Symbol ?
【问题讨论】:
标签: ruby-on-rails ruby pluralize
您可以将String 复数,表示实际文本。 Symbols 有点抽象。
所以,根据定义,不。但是,也许您可以打开 Symbol 类定义并添加:
class Symbol
def pluralize
to_s.pluralize.to_sym
end
end
然后,您可以调用:
:shop.pluralize # => :shops
【讨论】:
不,就是这样。
【讨论】:
如果您愿意更改 Ruby 的类,那么这很有效:
class Symbol
def pluralize
self.to_s.pluralize.to_sym
end
end
我还没有找到更优雅的解决方案,虽然我怀疑如果有,它可能只是 Rails 实现了类似于我上面的东西。
【讨论】: