簡體   English   中英

Rails在關系模型上創建資源的最佳實踐

[英]Rails best practice for creating a resource on a relational model

我想知道創建/銷毀關系資源的最佳方法是什么。 對於例如:我有兩個模型,分別稱為PictureFavorite 用戶可以將圖片添加到他的收藏夾中。

class Picture 

end


class Favorite

 belongs_to :picture
 belongs_to :user

end

我想知道哪個是添加登錄名以將圖片添加到他/她的最愛的最佳位置(做法)。 最好將它添加到帶有favorite動作的PicturesController ,該動作將根據收藏夾的存在來createdelete收藏夾,或者創建一個單獨的控制器,稱為FavoritesController控制器並添加兩個名為createdestroy動作?

遵循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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM