Vor einiger Zeit aufgerüstet wir unsere Anwendung Rails 4 und wechselte zu JRuby.Rails Migration erzeugt Standardzeitstempel (created_at, updated_at) als NULLABLE
Vor dieser Änderung erstellten Migrationen die Standardzeitstempel NOT NULL. Nach dieser Änderung fehlt die NOT NULL fehlt.
Wir schaffen diese Zeitstempel (created_at, updated_at) wie folgt:
class Model < ActiveRecord::Migration
def change
create_table :model do |t|
t.belongs_to :user, :null => false
t.text :content
t.timestamps
end
end
end
Die wichtigen Teile unserer Anwendung sind:
- Rubin '1.9.3': Motor => ‚jruby ‘: engine_version => '1.7.9'
- Juwel 'Schienen', '4.0.2'
- gem 'active-jdbcpostgresql-Adapter', '1.3.4'
- postgresql: stabile 9.3.1
Haben Sie eine Ahnung, was das Problem verursachen könnten und wie können wir die Standard-Generation zurück zu NOT NULL ändern?
Groß, danke. Das ist es. Ich wundere mich, dass niemand sonst ein Problem mit dieser Änderung hat. Es hat wirklich einen großen Einfluss darauf, was Sie von Ihren Migrationen erwarten können. – maerzbow
Der Rails-Standard ist ': null => true' (was mit dem törichten Standard von SQL übereinstimmt) und ich habe den Eindruck, dass': null => false' auf 't.timestamps' nicht konsistent behandelt wurde. Vermutlich haben sie sich dafür entschieden, es konsistent zu machen, indem es mit dem Rest von Rails übereinstimmt. Eine Menge von ARs Interaktion mit relationalen Datenbanken verwirrt mich, um ehrlich zu sein. –
FWIW, es sieht so aus, als hätten Zeitstempel 'null: false' standardmäßig nur in der 3.2 Zeile. Es wurde in [rails/rails # 3334] (https://github.com/rails/rails/pull/3334) und dann [reverted] hinzugefügt (https://github.com/rails/rails/commit/fcef728). vor 4.0. –