Если я хорошо помню, что символы в ActiveRecord хранятся в формате yaml, необходимо выполнить какое-то преобразование, потому что в реляционной базе данных нет такого понятия, как символ (по крайней мере, я знаю об этом). Когда вы читаете его, это строка, которая не будет соответствовать вашему символу, и даже не строка символа, на самом деле это должно быть что-то вроде:
:x # => "--- :x\n"
Я думаю, что этот плагин может решить вашу проблему, но я честно не использовал его.
https://github.com/zargony/activerecord_symbolize
* РЕДАКТИРОВАТЬ *
Я оставляю вышеупомянутое, потому что я помню, что это была моя ситуация, и я могу исправить ее, если я ошибаюсь, тем не менее, я пытаюсь сделать это прямо сейчас, и сохраненное значение (Rails 3.1.3) представляет собой простую строку с значение символа, поэтому следующего должно быть достаточно.
class Example < ActiveRecord::Base
def aaa
super.to_sym
end
def aaa=(value)
super(value.to_sym)
aaa
end
end
Это, конечно, заставит значение всегда быть символом
** РЕДАКТИРОВАТЬ ПОСЛЕ ВОЗРАСТА **
Я думаю, что в этой ситуации хорошо, так как ясно, что в БД это строка и логика проста, но я настоятельно не рекомендую переопределять методы атрибута БД, чтобы добавить более сложную логику.