Модели или миграции сначала в Rails? - PullRequest
2 голосов
/ 08 августа 2010

Интересно, стоит ли сначала создавать модели или миграции в Rails?

Я слежу за BDD, сначала тестирую, потом проверяю код. Это дало мне понимание перехода от ТОПА к ДНУ.

Я слышал, как некоторые люди говорили: сначала модели и их ассоциации, а затем миграции для создания базы данных для них. Миграции / таблицы адаптируются к моделям, а не наоборот.

Значит ли это, что здесь разумно использовать подход TOP-DOWN, сначала модели (ассоциации, проверки), а затем миграции?

Ответы [ 4 ]

1 голос
/ 08 августа 2010

Технически, с принципами BDD, TDD red-green-refactor, вы сначала должны создать спецификацию или функцию.

describe MyModel do
  it "should exist"
end

Затем запустите тест и дайте ему провалиться, потому что у вас нет моделиMyModel,

class MyModel< ActiveRecord::Base
end

, затем напишите код модели и снова запустите тест.На этот раз это не удастся, потому что нет имени таблицы с таким именем модели, после чего вы пишете миграцию.После того, как миграция будет запущена, вы сможете быть зеленым (ожидающий статус в моем примере rspec), потому что спецификация только что заглушена.

1 голос
/ 08 августа 2010

Если вы используете генератор моделей, который поставляется с Rails, то модели и миграции обычно создаются за один шаг. Я не уверен, что вы подразумеваете под выражением "миграции / таблицы адаптируются к моделям, а не наоборот" . В таблицах модели хранят свои данные, поэтому обе являются интегральными.

0 голосов
/ 08 августа 2010

Лучше всего сначала создать миграцию, потому что тогда вы не забудете, что вам нужно зарегистрировать код миграции в системе контроля версий, чтобы другие члены команды могли ее использовать.Но опять же, на самом деле проще начать с моделей первым.

0 голосов
/ 08 августа 2010

, поскольку модели без миграций бесполезны, продолжайте работу с Генератором моделей (обе сразу), но в любом случае вам необходимо создать схему БД для тестирования моделей

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