Ich habe eine DB-Migration wie so:id-Feld ohne Autoinkrement Option in der Migration
class CreateParticipations < ActiveRecord::Migration
def self.up
create_table(:participations, :primary_key => 'Seat') do |t|
t.integer :Seat
t.string :Nickname
t.string :Clan
t.string :FirstName
t.string :LastName
t.string :Email
t.boolean :Payed
t.timestamps
end
end
def self.down
drop_table :participations
end
end
Nun Sitz ist mit einem Autoinkrement erstellt. Das will ich aber nicht. Ich möchte es ohne eine automatische Erhöhung. Ich werde Seat selbst in meiner Logik definieren.
Ich habe mich umgesehen, aber ich kann nicht finden, wie Auto_increment zu deaktivieren.
Wie mache ich das? Außer dass es manuell in MySQL gemacht wird.
Bist du wirklich sicher, dass du das machen willst? Es widerspricht der Konvention, die sehr gut in allen Rails funktioniert und Ihnen im Rest Ihrer Anwendung viel zusätzliche Arbeit verursachen wird, die diese Ausnahme von der Regel überall funktionieren lässt. Vielleicht "Sitz" in nur einem Feld auf diesem Tisch mit einem eindeutigen Index statt. Sofern Sie dies nicht benötigen, um sich an ein herkömmliches Legacy-Schema anzupassen, ist dies normalerweise eine schlechte Idee. Leider weiß ich nicht die tatsächliche Antwort auf Ihre Frage. –
Ich weiß, dass hier die Toten animiert werden, aber ein relativ triviales Beispiel könnte ein Modell sein, das an einen Nicht-Rails-Service gebunden ist, der IDs in diesem Service verwaltet. In Rails wäre keine automatische Inkrementierung erforderlich, da es am sinnvollsten wäre, die Rails-Repräsentation mit der ID der Nicht-Rails-Service-Repräsentation zu verknüpfen, anstatt eine ANDERE ID zu generieren und ANDERE Constraints zu verwalten. Ohne weitere Details über die Notwendigkeit in den ursprünglichen Umständen des Fragestellers, würde ich im Allgemeinen mit Ihnen übereinstimmen. –