2014-12-15 5 views
0

Я пытаюсь создать конечную точку API с помощью active_admin, и у меня возникли проблемы с настройкой маршрута, как я их хочу. Я также не уверен, соответствует ли мое решение для маршрутов лучшей практикой REST.
У меня есть следующие модели:Active admin nested_route для конечной точки API

class Classification < ActiveRecord::Base 

end 

class Channel < ActiveRecord::Base 
belongs_to :classification 
has_many :channel_genres 
has_many :channel_web_genres 
has_many :web_genres, through: :channel_web_genres 
end 

class ChannelWebGenre < ActiveRecord::Base 
belongs_to: channel 
belongs_to: web_genre 
end 

class WebGenre < ActiveRecord::Base 

end 

Я хочу, чтобы создать конечную точку, которая будет принимать classification_id и web_genre, и вернуть все каналы, которые представляют собой союз между двумя (каналами, которые принадлежат к классификации и у меня есть web_genre.) Я новичок в active_admin и новичок, чтобы порекомендовать лучшие практики, поэтому у меня есть следующие вопросы:

1) Какой контроллер/действие должен отображать эту карту с точки зрения лучших практик. Я склонялся к действию show web_genre, вложенному в классификацию (GET/classic /: id/web_genre /: id), но мне это действительно не нравится.

2) Как только я определяю комбинацию контроллера/действия, как я могу правильно вложить ресурс в active_admin (предположим, что я должен вложить ресурс).

Если я забыл какую-либо информацию, пожалуйста, не стесняйтесь комментировать, и я добавлю ее. Заранее благодарю за ваше время и помощь!

+0

AA делает экспозицию хорошими интерфейсами RESTful для зарегистрированных ресурсов, но я думаю, что сервис API должен быть построен отдельно. Я бы хотел порекомендовать взглянуть на более подходящие библиотеки http://intridea.github.io/grape/ https://github.com/nesquena/rabl – baxang

ответ

2

В общем, я не уверен, что ActiveAdmin - лучший способ создания API. Взгляните на inherited_resources, который, кстати, используется ActiveAdmin.

на вопросы:

  1. WebGenresController # показать под/классификации /: classification_id/web_genres /: идентификатор должен быть использован. Соблюдайте множественное имя в именах контроллеров и путей, что сэкономит вам намного хуже.
  2. С таким же belongs_to механизмом, как в модели. На основе inherited_resources, прочитайте there.
+2

Ответ от разработчика AA :) – baxang