Rails, PostgreSQL, Heroku - как изменить правило ": null => false"? - PullRequest
1 голос
/ 26 марта 2012

Я работаю над своим приложением (Rails 3.2, PostgreSQL 9.1) на локальном хосте, и там у меня все работает хорошо, поэтому я решил развернуть приложение в рабочей среде на Heroku.

После успешного развертывания приложения я попытался создать новый элемент и получил это сообщение об ошибке:

ActiveRecord::StatementInvalid (PG::Error: ERROR:  null value in column "persistence_token" violates not-null constraint

Речь идет о столе Users (используйте Authlogic драгоценный камень). Это образец миграции - критическая часть:

class CreateUsers < ActiveRecord::Migration
  def self.up
     create_table :users do |t|
       t.string    :name,                :null => false   
       t.string    :email,               :null => false                                           
       t.string    :crypted_password,    :default => nil, :null => true             
       t.string    :password_salt,       :default => nil, :null => true          
       t.string    :email,               :default => nil, :null => true          
       t.string    :persistence_token,   :null => false      
       t.string    :single_access_token, :null => false              
       t.string    :perishable_token,    :null => false            
       t.datetime  :last_request_at                                    
       t.datetime  :current_login_at                                   
       t.datetime  :last_login_at                                      
       t.string    :current_login_ip                                   
       t.string    :last_login_ip                                      

       t.timestamps
     end
   end
end

Что могло вызвать эту проблему? Я имею в виду, я вижу в миграции правило :null => false и в сообщении об ошибке говорится о значении NULL, сохраненном в этом столбце, но как на локальном хосте это работает хорошо, а на Heroku нет?

И как я мог это исправить? Моей первой идеей было создать новую миграцию, в которой я настроил этот столбец :null => true, но правильно ли это?

1 Ответ

0 голосов
/ 26 марта 2012

Я установил значение по умолчанию DEFAULT '', и ошибка исчезла ...

...