Я работаю над своим приложением (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
, но правильно ли это?