из: http://ruby -doc.org / core / classes / String.html # M000809
str.intern => symbol
str.to_sym => symbol
Возвращает символ, соответствующий str
, создавая символ, если он ранее не существовал. Смотри Symbol#id2name
.
"Koala".intern #=> :Koala
s = 'cat'.to_sym #=> :cat
s == :cat #=> true
s = '@cat'.to_sym #=> :@cat
s == :@cat #=> true
Это также можно использовать для создания символов, которые не могут быть представлены с использованием записи :xxx
.
'cat and dog'.to_sym #=> :"cat and dog"
Но для вашего примера ...
"Book Author Title".gsub(/\s+/, "_").downcase.to_sym
должен идти;)