[英]Rails best practice for creating a model during the creation of a separate model
[英]Rails best practice for creating a resource on a relational model
我想知道創建/銷毀關系資源的最佳方法是什么。 對於例如:我有兩個模型,分別稱為Picture
和Favorite
。 用戶可以將圖片添加到他的收藏夾中。
class Picture
end
class Favorite
belongs_to :picture
belongs_to :user
end
我想知道哪個是添加登錄名以將圖片添加到他/她的最愛的最佳位置(做法)。 最好將它添加到帶有favorite
動作的PicturesController
,該動作將根據收藏夾的存在來create
或delete
收藏夾,或者創建一個單獨的控制器,稱為FavoritesController
控制器並添加兩個名為create
和destroy
動作?
遵循Rails約定和RESTful原則的最佳方法是為每個資源創建一個控制器 ,其中包含操縱該資源所需的操作。 根據您的情況,您可以同時創建和刪除收藏夾資源,因此路由映射應如下所示:
Prefix Verb URI Pattern Controller#Action
favorites POST /favorites(.:format) favorites#create
favorite DELETE /favorites/:id(.:format) favorites#destroy
您的控制器應如下所示:
class FavoritesController < ApplicationController
def create
# Create a favorite here based on its params !
end
def destroy
# Destroy a favorite here based on its id !
end
end
關於登錄過程,我確實認為應該由UsersController
關注,盡管某些Ruby開發人員更喜歡使用SessionsController
,因為它是Devise的默認設置。
請注意,您可以選擇創建嵌套的資源路由,這是將has_one
/ belongs_to
關系映射到路由時的一個好主意,這確實是一種最佳實踐。 您可以查看Rails Guides以獲得詳細信息。
我在這里不建議采用這種方法,因為涉及到User
資源時,將其ID放在您的路由上並不是一個好主意,並且默認情況下在后端使用它。
希望對您有幫助:P
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.