Hej,
Szybkie pytanie:
Muszę dopisać kawałek soft, który będzie operował na istniejącej już bazie danych. Po prostu Railsy dorzucą tam kilka tabel. Czy tworząc nową aplikację nie wyczyści mi tej bazy?
Hej,
Szybkie pytanie:
Muszę dopisać kawałek soft, który będzie operował na istniejącej już bazie danych. Po prostu Railsy dorzucą tam kilka tabel. Czy tworząc nową aplikację nie wyczyści mi tej bazy?
A nie możesz zaimportować starej bazy do nowej?
Nie, na starej cały czas operuje kilka różnych systemów - interface www w php i duża liczba demonów. Chcę tylko wiedzieć czy zje mi bazę czy nie
Chyba zaraz założe jakąś, nawrzucam i przetestuje
Ja też musiałem się podczepiać do istniejącej bazy (firebird, kolumny “po polsku”, PK po kolumnach innych niż ID !) i robiłem to tak:
dodawałem np w /models/company.rb wpis:
class Company < ActiveRecord::Base
self.table_name = 'firma'
...
end
nie miałem żadnych wpisów w db/migrate, a mimo wszystko(!) wykonywałem
rake db:migrate
Railsy za to wdzięcznie i fantastycznie wczytywały strukturę z bazy do schema.rb np taką strukturę:
create_table "firma", primary_key: "id_firma", force: :cascade do |t|
t.string "id_site", limit: 10
t.string "skrot", limit: 10, null: false
t.string "nazwa", limit: 100, null: false
t.string "miejscowosc", limit: 50, null: false
t.string "ulica", limit: 50
t.string "nr_domu", limit: 10, null: false
t.string "nr_lokalu", limit: 10
t.string "kod_pocztowy", limit: 6
t.string "adres", limit: 160
t.string "telefon_fax", limit: 50
t.string "e_mail", limit: 50
t.string "nip", limit: 13
t.string "regon", limit: 9
t.string "pesel", limit: 11
t.integer "gr_nieformalna", limit: 2, default: 0, null: false
t.string "uwagi", limit: 255
t.integer "change_user", limit: 4, null: false
t.datetime "change_date", null: false
end
add_index "firma", ["change_user"], name: "fk_firma_1"
add_index "firma", ["id_firma"], name: "pk_firma", unique: true
Niczego nie wyczyściło :), a ja mogłem się posługiwać np
@company = Company.find(id_firma: id)
P.S.
…ale jakby co, to operacje na żywym organizmie robisz na własną odpowiedzialność
Przedewszystkim zrób kopię bazy danych do testów.
Następnie:
class Model < ActiveRecord::Base
self.table_name = 'nazwa_tabelki'
self.primary_key = 'klucz_glowny_ale_tylko_jesli_autoincrement' # jak nie to _nil_
end
Generalnie warto by było zablokować pewne destruktywne rake taski - jak to zrobić możesz poczytać tutaj: https://coderwall.com/p/jt4e1q/disable-destructive-rake-tasks-by-environment
Dobra, na wszelki wypadek, zrobię oddzielną bazę. W zasadzie w obecnym systemie mogę sobie skakać po bazach.