Migracja a uaktualnianie modelu

Witam.
Mam aplikację w której znajduje się model Post o atrybutach id, name. Powiedzmy że aplikacja działa sobie już jakiś czas i mam sporo danych w bazie. I teraz przychodzi potrzeba aby zmienić nazwę tabeli w bazie i nazwę modelu na Article. Do tego chcę jeszcze zmienić pole name na title(bo tak by było lepiej :P). Nie chcę robić tego ręcznie i zmieniać wszystkiego w aplikacji, dlatego piszę sobie migrację która rozwiąże mi ten problem w bazie danych. Powiedzmy ze ta migracja wygląda następująco:

[code]class Rename < ActiveRecord::Migration
def self.up
change_table :posts do |t|
t.rename :name, :title
end

rename_table(:posts, :article)

end

def self.down
change_table :posts do |t|
t.rename :title, :name
end

rename_table(:article, :posts)

end
end[/code]
I teraz moje pytanie. Co zrobić aby cała aplikacja (modele kontrolery oraz widoki) używały tych nowych nazw? Czy w ogóle jest możliwe zrobienie takiego czegoś z automatu, czy niestety pozostaje ręczna zabawa (jakkolwiek to brzmi ;)).

Migracje służą do wprowadzania zmian w bazie danych. Zmiany w kodzie musisz zrobić ręcznie. :slight_smile:

ack moze się okazać pomocne w tym przypdaku :wink:

Post = Class.new(Article) Post.class_eval do def initialize(*params, &block) super ActiveSupport::Deprecation ... # uzywasz starej nazwy klasy end end
oraz dodać tymczasowo accessory name i name= w Article które będą delegowały do titale i title= oraz zapodawały, że stara metoda jest deprecated. Jeśli masz dobre testy, które obejmują spory stack aplikacji to zapuszczasz je i patrzysz w których linijkach używane są stare wywołania metody i poprawiasz na nowe. Ja bym poszedł w tą stronę gdyby moja aplikacja była duża.

Takie rzeczy tylko w Hobo, Rails tego nie ma. W Hobo masz skrypcik ktor odpalasz i on snchronizuje model, widok itp z migracją i na odwrót

Okej, dzięki za odpowiedzi :wink: