【发布时间】:2017-11-26 12:12:04
【问题描述】:
例如,假设我有 2 个资源 Author 和 Book,其中 Author has_many Books 和 Book belongs_to Author。
这意味着通过执行以下操作:
# routes.rb
resources :books
resources :authors do
resources :books
end
我将有两条路线指向BooksController#index:
1)GET /books 和 2)GET /authors/:id/books。
考虑我们不关心所有书籍的场景,只关心 来自给定作者的书籍列表(有效地使路线 #1 停止使用)。
这使BooksController#index 的逻辑类似于:
# BooksController.rb
def index
@books = Book.where(author: author)
render json: @books
end
然而,Author 的作用域让我很不舒服,因为它是一般的BooksController,而其他 CRUD 方法与 Authors 无关。 是否应该像上面的 #index 方法一样位于一个单独的命名空间控制器中,例如 Author::BooksController?
【问题讨论】:
-
参考这个问题。可能会帮助你:) stackoverflow.com/questions/14945754/…
标签: ruby-on-rails ruby design-patterns