まず、Rubyのプログラム上に現れる「シンボル」の背景として、「シンボルテーブル」があります。プログラムを動作させる上では、メソッド名や変数名など、いろんな名前が出てきますが、いちいち文字列比較すると動作が遅くなるので、「シンボルテーブル」というテーブルに入れて数値に変換して、それでメソッドなどを探すような仕組みになっています。
で、そのシンボルテーブルの機能を借りられるようにしたのがRubyプログラム上のシンボルです。そのため、(引用符などを使わずに)リテラルとして書けるシンボルは、:foo、:@val、:[]、:foo?、:save!のようにメソッドや変数名として使えるものに限られています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。