Помимо символов, здесь следует отметить, что в Ruby нам не нужно явно указывать {}, чтобы указать, что аргумент является хэшем, если он является последним аргументом. Я имею в виду, позвонив
validates :name, :presence => true
вы звоните
validates :name, {:presence => true}
или
validates(:name, {:presence => true})
тогда становится ясно, что вы вызываете метод validates
с 2 аргументами, символом и хешем. Если мы проигнорируем символ и подставим на место строки, например:
validates("name", {"presence" => true})
это очень похоже на вызов метода на любом другом языке. Так что следите за этим, так как он используется почти во всех вспомогательных тегах, используемых Rails.
Для других методов также вы можете увидеть это:
validates(:title, {:presence => true, :length => {:minimum => 5}})
В случае create_table
это вызов метода с 2 аргументами, символом и блоком.