March 14, 2015
Oszlop hozzáadása táblához vagy oszlop törlése táblából Rails-ben
Gyakran járok úgy, hogy utólag hozzá kell adni egy Rails alkalmazás adatbázisának valamelyik táblájához még egy oszlopot - vagy módosítani, törölni kell egy már meglévőt. Lássuk, mik a lehetőségek.
A Rails alkalmazás mappájába navigálva parancssorba írom ezt:
rails generate migration add_coolfields_to_tablename fieldname:string otherfield:stringAz add_ utáni szó (fenti példában _coolfields_)a migration-t nevezi el tapasztalatom szerint, túl sok jelentősége nincs . A _to_ utána szó (fenti példában _tablename_) viszont fontos, ez a tábla neve, ahová injektálni szeretnénk.
Itt egy konkrétabb példa:
rails generate migration add_contact_details_to_customers work_email:string private_email:stringCamelCase-t is használhatunk:
rails generate migration AddContactDetailsToCustomers work_email:string private_email:stringEnnek hatására a projekt db/migrate mappájában születik egy új fájl [dátumidő]_addfieldname_to_tablename.rb néven. Azt, hogy eddig milyen nevű és típusú oszlopok vannak a táblában, azt a db/schema.rb fájlból szoktam kihalászni. Ott látszik, hogy a táblák neve többesszámban van, így emlékeztet arra, hogy a migráció létrehozásakor is azt használjak.
Az oszlop törlése hasonlóképp működik, ott ez a varázsige:
rails generate migration RemovePhoneFromCustomers phone:stringHogy az elvégzett módosítás életbe lépjen, szükséges egy migrációt futtatni az adatbázison, erre jó a következő parancs:
rake db:migrateVagy ha mondjuk csak a TEST környezethez belőtt adatbázison szeretnénk először:
rake db:migrate RAILS_ENV=testBővebb infó: http://edgeguides.rubyonrails.org/active_record_migrations.html