2015-08-12 7 views
7

Я разрабатываю веб-приложение с использованием рельсов 4 в первый раз. Я делаю все мои ассоциации моделей двунаправленными и использую inverse_of везде, где это разрешено.рельсы 4 Когда требуется «inverse_of»?

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

Я был бы признателен за любые общие рекомендации в этом отношении от опытных разработчиков рельсов. Надеюсь, этот вопрос не слишком расплывчатый, чтобы иметь здесь ценность.

Спасибо!

Update: В дополнении к нестандартным названиям, как представляется, два основные дополнительные случаи, где требуется установка явно inverse_of:

  1. для INVALID_AUTOMATIC_INVERSE_OPTIONS (http://www.rubydoc.info/docs/rails/ActiveRecord/Reflection/AssociationReflection)
  2. , если Вы принимаете Вложенные атрибуты - это потому, что родительский объект еще не сохранен и, следовательно, не имеет идентификатора. См. http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations

ответ

3

Обычно желательно иметь обратные установки. Хорошей новостью является то, что в большинстве случаев это обрабатывается автоматически. Обычно вам просто нужно явно указать инверсии для ассоциаций с нестандартными именами. Вы можете узнать намного больше в official documentation.

+0

Спасибо. Я обнаружил, что я все еще сталкивался с проблемой, описанной здесь: http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations под заголовком _Создание объекта и его дети через accepts_nested_attributes_for в: has_many association._ Я считаю, что проще просто установить инверсии для каждой ассоциации, и таким образом мне не нужно беспокоиться о том, будет ли это «просто работать» для данного случая .. –

+4

@Nesteddoll Легче в краткосрочной перспективе, возможно. Я управляю буквально сотнями приложений Rails для производства, и я могу с уверенностью сказать, что уборка вашего приложения ненужным кодом, который вы не понимаете, быстро станет кошмаром для обслуживания. Испытайте себя лучше, не добавляйте дополнительный код в свое приложение, которое вам не нужно, и не добавляйте код, который вы не понимаете. Ваше будущее будет благодарно вам. –

+0

спасибо. Я ценю то, что вы говорите, - и я рассмотрю более подробно. –