Каков механизм ‘end_of_association_chain’ в драгоценном камне ‘Унаследованные ресурсы

#ruby-on-rails #inherited-resources

#ruby-на-рельсах #унаследованные ресурсы

Вопрос:

Унаследованные ресурсы — это мощная жемчужина, которую я могу использовать, чтобы избежать множества повторяющихся вещей. Но я все еще не понимаю, почему он может получить объект через end_of_association_chain, даже если я не передавал ничего, связанного с его моделью belongs_to

Ответ №1:

Попробуйте изучить маршруты Rails. AFAIK end_of_association_chain создает свое значение на основе маршрутов.

/book/1/pages -> вы получаете первые страницы книги внутри end_of_association_chain .

Смотрите также: https://github.com/activeadmin/inherited_resources#overwriting-defaults

end_of_association_chain возвращает ваш ресурс после вложения всех ассоциаций и областей (подробнее об этом ниже).

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

 resource :production, only: [:update], controller: :production, selected_navigation_category: 'production', path: 'marketing' do
  resources :photos, only: %i[index update destroy] do
    collection do
      get 'set/:photo_set', to: :photo_set, as: :photo_set
 

У меня есть PhotosController#photo_set метод, который содержит end_of_association_chain . Мне также было интересно — что это за значение — пока я не погрузился в файл routes.