Ich habe eine Tabelle mit einigen Spalten, jetzt muss ich eine Spalte ändern, um es einzigartig zu machen (keine doppelten Werte), wie kann ich das in Ruby auf Schienen tun?wie man eine Tabelle Spalte in Ruby auf Schienen hinzufügen
Antwort
Sie können eine Validierung zu Ihrem Modell hinzufügen duplizierten Werte
class MyModel < ActiveRecord::Base
validates_uniqueness_of :my_column_name
end
counter = 0
Model.all.each {|m| m.some_value = counter; m.save; counter += 1;}
:)
und fügen Sie dann die Validierung als @j zu verbieten. antwortete
Jemand korrigiert mich, wenn ich falsch liege, weil ich das persönlich nicht verwendet habe, aber ich glaube, dass Sie eine Migration verwenden können, um Eindeutigkeit auf der Datenbankebene zu setzen.
def self.up
change_column :<table name>, :<attribute name>, :<data type>, :unique => true
end
Dies ist Code direkt aus meinem Arbeitsprojekt:
add_index(:tickets, [:to_email, :body_hash, :from_email] , :unique => true, :limit => 255)
Notiere die Grenze Funktionalität ist nur erforderlich, wenn Sie auf einem Textfeld einzigartig verwenden (anstatt eines Strings), obwohl es isn t implementiert in Schienen noch (kommen in 3.0 glaube ich). Sie können mithilfe des mysql_index_length http://github.com/eparreno/mysql_index_length/
add_index(:table_name, [:column_name, :second_column_name, :third_column_name] , :unique => true, :limit => 255)
dieses Beispiel einen eindeutigen Index für drei Spalten-Plugin, um diese Einschränkung zu bekommen ist die Schaffung wenn Sie ihn für eine Spalte verwenden können, wenn Sie es wünschen.
Link zum Projekt auf GitHub: http://github.com/thinkbohemian/WhySpam/blob/master/db/migrate/20091223193335_add_unique_index.rb
class MyModel < ActiveRecord::Base
validates_uniqueness_of :my_column_name
end
oben vorgeschlagen brechen können, wenn Sie Unicorn laufen auf mehreren Heroku dynos, die jeweils mit mehreren Web-Prozesse usw.
so einen besseren Weg zu tun, wäre es
class AddEmailIndexToUser
def change
# If you already have non-unique index on email, you will need
# to remove it before you're able to add the unique index.
add_index :users, :email, unique: true
end
end
https://robots.thoughtbot.com/the-perils-of-uniqueness-validations
seinoder Sie können dazu row sql in migration verwenden.
execute <<-SQL
ALTER TABLE Persons
ADD UNIQUE (P_Id)
SQL
- 1. Wie macht man eine Beziehung in Ruby auf Schienen?
- 2. Hinzufügen von Spalte zu Bücher Tabelle in Schienen
- 3. Wie kann man Ruby auf Schienen sagen, nicht in eine Säule einfügen?
- 4. Wie Tooltip mit link_to_remote image_tag in Ruby auf Schienen hinzufügen?
- 5. Schienen neue Zeile in Tabelle hinzufügen
- 6. Abfrage in Schienen auf attr_encrypted Spalte
- 7. Datenbank monatlich Ruby auf Schienen aktualisieren?
- 8. Schienen 5: Wie man eine Spalte von einer Datenbank entfernt?
- 9. Wie berechnet man 32 Bit CRC in Ruby auf Schienen?
- 10. Wie dynamisch eine neue Spalte in einer HTML-Tabelle hinzufügen
- 11. SQL Wie Operator in Ruby auf Schienen
- 12. Ruby auf Schienen link_to Syntax
- 13. Wie lade ich eine Datei in Ruby auf Schienen hoch?
- 14. var_dump und sterben wie PHP, In Ruby auf Schienen (debug in Ruby auf Schienen)
- 15. Ruby auf Schienen SQLite-Problem
- 16. Büroklammer Ruby auf Schienen
- 17. Kopieren Sie eine Spalte in einer Datenbanktabelle in eine andere Spalte in der gleichen Tabelle in Schienen
- 18. Wie bindet man einen externen Host für Ruby auf Schienen?
- 19. Schienen: Hinzufügen eines Index nach dem Hinzufügen der Spalte
- 20. Automatische Assoziationen in Ruby auf Schienen Fixtures
- 21. Ruby auf Schienen neue Objekteigenschaften
- 22. Speichern eines Arrays in der Datenbank in Ruby auf Schienen
- 23. Tabelle ändern Spalte hinzufügen Syntax
- 24. eine Spalte in einer Tabelle in HIVE QL hinzufügen
- 25. Wie kann ich eine Spalte zu einer vorhandenen Tabelle hinzufügen?
- 26. Wie man einen Hash-Wert in der Tabelle Spalte in Schienen
- 27. Index Hinzufügen: einzigartig für eine Spalte in Ruby on Rails über Migration erzeugen
- 28. Ruby auf Schienen Anwendung root
- 29. Spalte in Tabelle mit ASP.NET-Identität hinzufügen
- 30. Suchfunktion für Gespräche in Ruby auf Schienen
dies wird nicht auf der MySQL-Tabelle Ebene arbeiten ... – ohana
dies war für mich mit mysql Ver 14.14 Distrib 5.5.31, für debian-linux-gnu (x86_64). Ich mochte diese Lösung. – Askar
Bei starkem Verkehr mit mehreren Prozessen kann dies zu Problemen führen. – lulalala