Generuj migrację-Utwórz tabelę przyłączenia
Przejrzałem wiele postów SO
i google
do generowania migracji tabeli join dla Stowarzyszenia has many and belongs to many
i nic nie działa.
Wszystkie rozwiązania generują pusty plik migracji.
Używam rails 3.2.13
i mam dwie tabele: security_users
i assignments
. To są niektóre rzeczy, które wypróbowałem:
rails generate migration assignments_security_users
rails generate migration create_assignments_security_users
rails generate migration create_assignments_security_users_join_table
rails g migration create_join_table :products, :categories (following the official documentation)
rails generate migration security_users_assignments security_user:belongs_to assignments:belongs_to
Czy ktoś może powiedzieć, jak utworzyć migrację tabeli join pomiędzy dwoma tabelami?
3 answers
Uruchom to polecenie, aby wygenerować pusty plik migracji (nie jest wypełniany automatycznie, musisz go wypełnić samodzielnie):
rails generate migration assignments_security_users
Otwórz wygenerowany plik migracji i dodaj ten kod:
class AssignmentsSecurityUsers < ActiveRecord::Migration
def change
create_table :assignments_security_users, :id => false do |t|
t.integer :assignment_id
t.integer :security_user_id
end
end
end
Następnie uruchom {[2] } z terminala. Stworzyłem quiz na temat wielu_to_many relacji z prostym przykładem, który może Ci pomóc.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-02 01:30:41
Aby autopopulować polecenie create_join_table w wierszu poleceń, powinno ono wyglądać następująco:
rails g migration CreateJoinTableProductsSuppliers products suppliers
Dla modelu produktu i modelu dostawcy. Rails utworzy tabelę o nazwie "products_suppliers". Zwróć uwagę na pluralizację.
(zwróć uwagę, że polecenie generation
można skrócić do tylko g
)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-14 12:49:34
Zwykle lubię mieć plik "model", jak również podczas tworzenia tabeli join. Dlatego tak.
rails g model AssignmentSecurityUser assignments_security:references user:references
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-28 10:51:51