2 индекс подходит? - PullRequest
       4

2 индекс подходит?

2 голосов
/ 26 февраля 2012

У меня есть несколько очень коротких вопросов, которые все связаны, и я не думаю, что для каждого

требуется отдельный пост.
  1. если у меня есть модель User (Devise gem), которая содержит атрибуты «username» и «email», и оба они уникальны, добавить add_index к ним обоим или только к одному? Только один ключ "нужен" для этой конкретной таблицы в качестве внешнего ключа, я просто не знаю, должен ли я добавить add_index для них обоих.

  2. как я могу изменить порядок проверок, которые происходят в начале моей формы? Прямо сейчас сообщения проверки: username находятся внизу, но это первое поле в форме, поэтому они должны быть вверху. это после того, как я добавил поля в жемчужину разработки, так что я предполагаю, что проверки разработки выполняются в первую очередь перед моей.

  3. не одобряется ли редактирование файла db migrate для устройства devise или я должен выполнять рельсы g миграцию для каждого изменения, которое я хочу сделать ?. Мое приложение еще не запущено, но я только что увидел несколько руководств, в которых все рекомендовали этот шаг.

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

1: Это зависит от того, насколько строгим вы хотите быть и каким образом. С одной стороны, поскольку добавить в оба поля уникальное ограничение / индекс так просто и дешево (я предполагаю, что это традиционная схема SQL), почему бы и нет? С другой стороны, некоторые приверженцы рельсов утверждают (по уважительной причине), что вам следует отказаться от специфики любого поставщика базы данных и применить все ограничения в модели рельсов, а затем добавить индексы (а не ограничения) в качестве оптимизации производительности. Я старый skool, поэтому я предпочитаю первый, но я также пурист, поэтому я проверяю, верны ли мои модели rails и мои приложения никогда не полагаются на специфику db vendor.

В режиме 2: я бы обработал отображение ошибки валидации в слое представления, т. Е. Не зацикливался на порядке их выполнения - думайте обо всех валидациях как о атомарной операции. Затем в представлении вместо простого вывода сообщений об ошибках в том порядке, в котором они находятся, измените порядок хэширования или даже проверьте и выведите каждый ключ в явном виде. Это немного менее ремонтопригодно, в том случае, если вы добавляете новый ввод, вам необходимо обновить этот код представления. Но это незначительно по сравнению с головной болью попытки поддерживать порядок выполнения проверок. Лично я не верю, что порядок, в котором печатаются сообщения об ошибках, даже уместен, но я знаю, что некоторые люди теряют сознание.

3: Согласитесь с Себи, не редактируйте драгоценные камни или что-либо, что предоставляют драгоценные камни, и не редактируйте миграции задним числом. Добавить новую миграцию тривиально, так что просто сделайте это и переходите к интересным вещам. Если я являюсь единственным программистом в приложении, которое не запущено в производство, я воспользуюсь ярлыком, но как только оно появится или появится другой разработчик, я буду более дисциплинированным. И чем больше времени я трачу на программирование rails, я нахожу написание rails db-миграций так же легко или просто, как SQL.

1 голос
/ 26 февраля 2012

(1) Индекс будет использоваться для поиска строк в таблице «Пользователи», поэтому, если вы будете искать пользователей по их электронной почте, вы можете добавить индекс как для электронной почты, так и для имени пользователя. В противном случае имя пользователя должно быть в порядке.

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

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