Переопределяя у ActiveRecord модели #method_missing важно помнить, что методы чтения атрибутов генерятся через сам #method_missing
Так, например, код
class Appearance < ActiveRecord::Base serialize :prefereneces, HashWithIndifferentAccess def method_missing(name, *args) preferences[name] || super end endвывалит Exception SystemStackError: stack level too deep
Обойти это можно, вызвав сначала super и перехватив NoMethodError, а потом его рейзануть обратно [...]
