2015-08-12 11 views
7

Zajmuję się tworzeniem aplikacji internetowej przy użyciu szyn 4 po raz pierwszy. Tworzę wszystkie skojarzenia modeli dwukierunkowo i używają inverse_of wszędzie tam, gdzie jest to dozwolone.szyny 4 Kiedy wymagane jest "odwrócenie"?

Odczytując dokumentację, odniosłem wrażenie, że jest to prawdopodobnie najlepsza praktyka, ale nigdy nie było to jasne.

Byłbym wdzięczny za wszelkie ogólne porady w tym zakresie od doświadczonych programistów szyn. Mam nadzieję, że pytanie nie jest zbyt niejasne, by mieć tutaj wartość.

Dzięki!

Aktualizacja: Oprócz nietypowych imion, pojawiają się dwa główne dodatkowe przypadki, w których potrzebne jest wyraźnie ustalone inverse_of:

  1. dla INVALID_AUTOMATIC_INVERSE_OPTIONS (http://www.rubydoc.info/docs/rails/ActiveRecord/Reflection/AssociationReflection)
  2. jeśli akceptując zagnieżdżone atrybuty - Dzieje się tak, ponieważ obiekt nadrzędny nie jest jeszcze zapisany i dlatego nie ma identyfikatora. Patrz http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-associations

Odpowiedz

3

Zazwyczaj pożądane jest skonfigurowanie odwrotności. Dobra wiadomość jest taka, że ​​w większości przypadków jest to obsługiwane automatycznie. Zwykle trzeba tylko jawnie ustawić odwrotności dla skojarzeń z niestandardowymi nazwami. Możesz dowiedzieć się o wiele więcej w official documentation.

+0

Dzięki. Uważam, że nadal napotykam problem opisany tutaj: http://viget.com/extend/exploring-the-inverse-of-option-on-rails-model-ocociations w części "Tworzenie obiektu i jego dzieci poprzez accepts_nested_attributes_for w: has_many association._ Uważam, że łatwiej jest ustawić odwrotność dla każdego skojarzenia iw ten sposób nie muszę się martwić o to, czy będzie "działać po prostu" dla danego przypadku. –

+4

@Nesteddoll Łatwiej w krótkim terminie. Zarządzam dosłownie setkami aplikacji Railsowych i mogę z całą pewnością stwierdzić, że zaśmiecanie aplikacji niepotrzebnym kodem, którego nie rozumiesz, szybko stanie się koszmarem utrzymania. Podejmij wyzwanie, aby być lepszym, nie dodawaj dodatkowego kodu do swojej aplikacji, którego nie potrzebujesz i nie dodawaj kodu, którego nie rozumiesz. Twoja przyszłość będzie ci wdzięczna. –

+0

dziękuję. Doceniam to, co mówisz - i przyjrzę się odwrotności bardziej szczegółowo. –