W Ruby on Rails, jak dodać klucz obcy w migracji?Obsługa ograniczenia klucza obcego w szynach
Odpowiedz
AFAIK, nie ma w tym żadnej wbudowanej obsługi, ale są tam several plugins, które ci w tym pomogą. Możesz również dodać je ręcznie do swoich plików migracji, wystarczy użyć metody execute, np. (Próbka z Rails API):
class MakeJoinUnique < ActiveRecord::Migration
def self.up
execute "ALTER TABLE `pages_linked_pages` ADD UNIQUE `page_id_linked_page_id` (`page_id`,`linked_page_id`)"
end
def self.down
execute "ALTER TABLE `pages_linked_pages` DROP INDEX `page_id_linked_page_id`"
end
end
Oto rozwiązanie oparte klejnot, który zawiera wsparcie dla dodawania i usuwania kluczy obcych, nie powiedzie się z SQLite i działa poprawnie z schema.rb plików:
FYI, 'foreigner' nie generuje kluczy obcych w' schema.rb' przy użyciu SQLite, ponieważ SQLite nie obsługuje kluczy obcych. – ashes999
jest to aktualizacja do klejnotu matthuhiggins-cudzoziemca: http://github.com/sparkfly/foreigner
Cechy:
- rspec zasięg, testowane przed PostgreSQL 8.3.9 i MySQL 5.0.90
- wsparcie migracji
- wsparcie schema.rb
Przyszłe wersje będą zawierać ograniczenia wyboru dla PostgreSQL, która jest potrzebna do realizacji wielu -table dziedziczenie.
Dzięki. klejnot cudzoziemca nie działa dobrze z metodą zmiany, szczególnie jeśli tabela nie została wcześniej utworzona. To działa świetnie – Sean
Twoje powitanie. Daj mi znać (przez github), jeśli znajdziesz jakieś błędy. –
Czy wystarczy dodać następujące modele, na przykład z modelami Products
i User
?
add_index :products, :user_id
Dodanie indeksu z pewnością pomoże w wydajności kwerendy, ale nie spowoduje, że baza danych wymusi ograniczenia klucza obcego. –
- 1. Wartości pola klucza obcego phpMyAdmin obcego klucza
- 2. SQL 2008 - Ograniczenia klucza obcego w widoku INFORMATION_SCHEMA
- 3. Czy ograniczenia klucza obcego wpływają na przekształcanie zapytań w Oracle?
- 4. Podczas dodawania ograniczenia klucza obcego, który kierunek jest najlepszą praktyką?
- 5. Jak usunąć wszystkie ograniczenia klucza obcego we wszystkich tabelach?
- 6. Zobacz wszystkie ograniczenia klucza obcego dla całej bazy danych MySQL
- 7. Najpierw kod EF - niestandardowa nazwa ograniczenia klucza obcego
- 8. Jak usunąć rekord za pomocą ograniczenia klucza obcego?
- 9. zerowalne klucza obcego w Rails
- 10. Skróty klucza obcego w tabeli
- 11. Użyj klucza podstawowego złożonego jako klucza obcego
- 12. MySQL: usuń wiersz ignorując ograniczenie klucza obcego
- 13. Plan wykonania klucza obcego Oracle?
- 14. SQlite - Android - Składnia klucza obcego
- 15. Definiowanie relacji bez klucza obcego
- 16. Błąd niezgodności klucza obcego SQLite
- 17. has_many: za pomocą klucza obcego?
- 18. Dlaczego warto używać ograniczeń klucza obcego w MySQL?
- 19. Elixir Ecto: Jak sprawdzić poprawność klucza obcego?
- 20. Mapowanie klucza podstawowego jako klucza obcego w bazie danych
- 21. Dodawanie klucza obcego w studiu graficznym 2012
- 22. Ustawianie klucza obcego w ASP.NET MVC 4
- 23. Wyszukiwanie według klucza obcego w admin
- 24. Dezaktywować ograniczenie klucza obcego w tabeli?
- 25. Jak używać dynamicznego klucza obcego w Django?
- 26. Usuwanie wierszy z klucza obcego w PostgreSQL
- 27. Składnia MySQL w tworzeniu klucza obcego
- 28. Jak używać "klucza obcego" w doktrynie?
- 29. ustawić wartość pustą w kolumnie klucza obcego?
- 30. EF nie generuje skojarzenia klucza obcego z klucza obcego w tabeli
Stary post, ale w przypadku gdy ktoś widzi to: unikatowy indeks nie jest równoznaczne z klucz obcy, więc uważam, że ten kod nie odpowiedzieć na pytanie OP. – dsetton