от: 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
должны идти ;)