【发布时间】:2021-04-19 01:53:47
【问题描述】:
我正在构建一个 API,其中有一个名为 Studio 的模型。工作室有很多电影和很多系列,电影和系列有很多自己的角色。此外,一个角色可以出现在许多电影和/或许多系列中,并且属于工作室。 我现在已经弄清楚了所有模型关系表的后勤工作,但是我现在正在尝试做的事情,我想不出办法。
所以我的路线经过设计,因此我可以执行类似 localhost:3000/api/v1/studios/1/characters 之类的操作 -> 这样我可以显示所有工作室的 (studio_id: 1) 角色(来自所有电影和系列属于那个工作室)。 这很容易,只需执行以下操作:
@characters = Character.where(studio_id:@studio.id)
在我的 CharactersController 中,我有
def get_studio
@studio = Studio.find(params[:studio_id])
end
现在我正在尝试设计物流以便我可以做到localhost:3000/api/v1/studios/1/seriees/1/characters
并且只从那个特定的系列中获取角色。 localhost:3000/api/v1/studios/1/movies/1/characters 也应该是有效的。
我试过了
def get_movie
@movie = Movie.find(params[:movie_id])
end`
和
def get_serie
@serie = Seriee.find(params[:seriee_id])
end
在我的 CharactersController 中,before_action :get_serie 和 before_action :get_movie 在代码的最开始,但它给了我一个错误,因为我从来没有得到一个 movie_id 和一个 seriee_id,它要么是一个要么另一个,所以它不能同时搜索两者。
来自角色的 POST 我只会从 localhost:3000/studios/1/characters 进行,所以这不是问题,我只想能够从 localhost:3000/studios/1/movies/1/characters 和 localhost:3000/studios/1/seriees/1/characters 获取
我希望我没有说太多,你能理解我。如果您认为我解决此问题的方法不正确,请告诉我,因为我正在学习,任何建议都会非常有价值。
【问题讨论】:
标签: ruby-on-rails controller nested-attributes