2012-03-13 2 views
0

У меня возникла проблема с Heroku в отношении добавления целочисленного столбца к существующей таблице.Heroku DB Push Error/Taps Serve

Вот как настроить мой миграции файла:

class AddFieldsToNetwork < ActiveRecord::Migration 
    def self.up 
    add_column :networks, :phone, :integer, :limit => 10 
    add_column :networks, :contact, :string 
    end 

def self.down 
    remove_column :networks, :phone 
    remove_column :networks, :contact 
    end 
end 

Теперь это работает локально, но когда я нажимаю на Heroku, я получаю то, что большинство людей получают:

!!! Caught Server Exception 
HTTP CODE: 500 
Taps Server Error: PGError: ERROR: integer out of range 

Если изменить :integer до :string, а затем добавление колонок работает и отлично работает на Heroku. Если я оставлю его под :integer, модель :network сработает, когда я создам новую «сеть».

Может ли кто-нибудь сказать мне, что я могу делать неправильно?

+0

Извините за ужасное форматирование – RubyNewbie

+0

Какую версию Ruby вы используете локально? Есть проблема с кранами, которые вызывают подобные ошибки, если вы используете 1.9.3 локально, но нажимаете на сервер с использованием 1.9.2 (Heroku использует 1.9.2). – mipadi

+0

В настоящее время используется ruby ​​1.9.2p290 (2011-07-09 версия 32553) [x86_64-darwin10.8.0] – RubyNewbie

ответ

1

: limit - запрашивает максимальную длину столбца. Это число символов для: string и: текстовых столбцов и количества байтов для: двоичных и целых столбцов.

Для телефона вы определенно используете строки, причина в том, что вы имеете в виду 10 символов. Не байты для чисел

+0

Спасибо Алишер. Извините за другой вопрос о новичке .... тогда в отношении: телефона, если я не хочу позволять пользователю писать какой-либо символ Альфы, просто создайте правило в контроллере? – RubyNewbie

+0

Вы должны добавить валидации в модель не контроллер. Поиск достоверности gems на rubygems.org перед написанием пользовательских валидаций. – Tabrez