Ich arbeite an meiner App (Rails 3.2, PostgreSQL 9.1) auf localhost und alles funktioniert mir dort gut, also habe ich mich entschlossen, die App zur Produktion nach Heroku zu deployen.Rails, PostgreSQL, Heroku - Wie ändert man die ": null => false" -Regel?
Nach dem erfolgreichen Einsatz der App habe ich versucht, ein neues Element zu erstellen und bekam diese Fehlermeldung:
ActiveRecord::StatementInvalid (PG::Error: ERROR: null value in column "persistence_token" violates not-null constraint
Es geht um den Tisch Users
(Verwendung Authlogic
gem). Dies ist das Beispiel für den migrationskritischen Teil:
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
Was könnte dieses Problem verursacht haben? Ich meine, ich sehe in der Migration ist die Regel :null => false
und die Fehlermeldung sagt über den Nullwert in dieser Spalte gespeichert, aber wie ist es möglich auf localhost diese Arbeit gut und auf Heroku nicht?
Und, wie könnte ich das beheben? Meine erste Idee war, eine neue Migration zu erstellen, wo ich für diese Spalte :null => true
eingerichtet, aber ist es richtig?
Einstellung ': null => true' erlaubt nur' null' Werte in der Spalte, das ursprüngliche Problem Abschattung und eine Dose öffnen Würmer. – Femaref