Я работаю над своим приложением (Rails 3.2, PostgreSQL 9.1) на localhost, и там все работает хорошо, поэтому я решил развернуть приложение для производства в Heroku.Rails, PostgreSQL, Heroku - как изменить правило ": null => false"?
После успешного развертывания приложения я попытался создать новый элемент и получил сообщение об ошибке:
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
, и в сообщении об ошибке говорится о нулевом значении, сохраненном в этом столбце, но как это возможно на localhost, это хорошо работает и на Heroku нет?
И как я мог исправить это? Моя первая идея состояла в том, чтобы создать новую миграцию, где я настроил для этого столбца :null => true
, но верно ли это?
Установки ': нуль => true' только позволяет' null' значения в столбце, затенение исходной задачи и открытие банки черви. – Femaref