Я бы порекомендовал поместить несколько отладочных операторов в arel. Отредактируйте engine.rb в последней строке трассировки стека. Я думаю, вам придется перезапустить консоль (а не просто перезагрузить!), Чтобы увидеть изменения в файле arel.
Вот неправильная строка в engine.rb:
attribute = relation.record.detect { |attr, _| attr.name.to_s == relation.primary_key.to_s }
Возможно, попробуйте распечатать имена атрибутов и посмотреть, проходит ли что-нибудь через метод обнаружения массива. Или распечатайте класс "attr". Класс должен быть "Arel :: Attribute", но очевидно, что Fixnum каким-то образом проходит туда.
attribute = relation.record.detect do |attr, _|
p attr.class
p attr.name
attr.name.to_s == relation.primary_key.to_s
end
Просто предположение, но я думаю, что плагин / драгоценный камень мешает чему-то в ваших моделях. Используете ли вы какие-либо зависимости, которые напрямую связаны с ActiveRecord?
Еще одним хорошим упражнением было бы создание пустого приложения на Rails 3 (без гемов или зависимостей от плагинов) с одной моделью и проверка, нет ли таких ошибок. Это исключило бы что-то в вашей среде разработки. Затем, если это сработает, возможно, вы сможете начать удалять некоторые зависимости по одной из другого приложения и посмотреть, не вызывает ли одна из них ошибку.