2014-09-10 2 views
2

Я хочу, чтобы мой код был аккуратным и соблюдал лучшие практики среди разработчиков rails, которые приводят меня к этому вопросу. Скажем, например, у меня есть следующие типы метод для моей моделиОбщий метод заказа для моделей Rails

  • Модель ассоциации
  • Validations
  • прицелы
  • Callbacks
  • Другие пользовательские методы

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

Бонус: Следует ли группировать переменные вместе со связанными с ними типами методов или все переменные должны быть сгруппированы в начале модели? Предположим, у меня была переменная для хранения регулярного выражения. Лучше ли держать его близко к проверке (-ам) или в верхней части модели, аналогичной тому, где вы будете хранить глобальные переменные?

Пример:

VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 
validates :email, uniqueness: true, length: {within: 5..50}, format: { with: VALID_EMAIL_REGEX } 
+0

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

+0

Да, я плохой. Я имел в виду либо близко, либо наверху. –

+1

Связанные записи: https://github.com/bbatsov/rails-style-guide#models и http://rails-bestpractices.com/posts/75-keep-code-struture-in-models-consistent –

ответ

2

Это не имеет значения, что вы будете следовать конвенции до тех пор, как вы держите его последовательным и проще для других разработчиков, чтобы понять.

Обычно следовал заказ будет

1. associations 
2. scopes 
3. class methods 
4. validations 
5. callbacks 
6. instance methods 

Некоторые люди также двигаться методы класса ниже обратных вызовов. Опять же, это зависит от вас. Но держать его в соответствие

2

Я следую за этот заказ:

  1. ассоциации
  2. оптические прицелы
  3. Validations
  4. Callbacks
  5. методы класса
  6. методы экземпляра

Снова его действительно до вас и важная часть - BE CONSISTENT.

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