API端点的活动管理nested_route

时间:2014-12-15 21:24:33

标签: ruby-on-rails rest activeadmin nested-routes

我正在尝试使用active_admin构建一个API端点,但我无法按照我想要的方式设置路由。我也不确定我的路线解决方案是否符合REST最佳实践 我有以下型号:

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)从最佳实践的角度来看,这应该映射到哪个控制器/操作。我倾向于嵌入在分类中的web_genre show动作(GET / classification /:id / web_genre /:id),但它对我来说并不是很合适。

2)一旦我确定了控制器/动作组合,我如何适当地将资源嵌套在active_admin中(假设我应该嵌套资源)。

如果我忘记了任何信息,请随时发表评论,我会添加它。提前感谢您的时间和帮助!

1 个答案:

答案 0 :(得分:2)

一般来说,我不确定ActiveAdmin是构建API的最佳方式。看一下inherited_resources,顺便说一下,ActiveAdmin会在内部使用它。

问题:

  1. WebGenresController #show下的/ classifications /:classification_id / web_genres /:id应该被使用。尊重控制器和路径名中的复数命名,这将为您节省更多。
  2. 使用与模型中相同的belongs_to机制。 Wich基于inherited_resources,有关详细信息,请阅读there