Easy Rails Вопрос: модель и миграция - PullRequest
1 голос
/ 26 июля 2010

Нужно ли повторно мигрировать, когда я меняю модели в Rails?Может кто-нибудь сказать мне, что миграция действительно делает?Я читаю его, и меня несколько смущает разница между материалом внутри db / migrate и материалом внутри app / models.

Например, если я добавляю в свою модель has_one, нужно липеренастроить это?Зачем?

1 Ответ

5 голосов
/ 26 июля 2010

Если ваша база данных изменяется, используйте миграцию.Если вы просто добавляете методы в свою модель, вам не нужно выполнять миграцию.

Пример:

Мы начинаем, и у нас просто есть first_name, last_name.Мы хотим сохранить их в базе данных, поэтому у нас есть миграция, которая выполняет:

/ app / models / human.rb

# empty

/ db / migrate / xxxxx.rb

add_column :humans, :first_name, :string
add_column :humans, :last_name, :string

Затем мы поженимся, поэтому мы хотим отследить, что

/ app / models / human.rb

belongs_to :spouse
  • Нам нужен spouse_idполе в базе данных, поэтому нам нужна миграция

/ db / migrate / xxxxx.rb

add_column :humans, :spouse_id, :integer
  • У нас тогда есть ребенок .... На самом делемы все были детьми в один момент, но для простоты у нас будут Люди и Потомки

/ app / models / offspring.rb

belongs_to :human

/ db/migrate/xxxxx.rb

create_table ... 
  • Однако нет необходимости добавлять что-либо в миграцию человека, поскольку здесь не изменяются никакие таблицы.Нам нужно добавить:

/ app / models / human.rb

has_many :offspring
  • Если вы хотите иметь возможность легко добраться до вашего первенца, вы бы просто добавили метод к вашей модели.Нет необходимости в миграции здесь:

/ app / models / human.rb

def first_born
  offspring.first
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...