我想知道创建/销毁关系资源的最佳方法是什么。例如:我有两个名为Picture
和Favorite
的模型。用户可以将图片添加到他的收藏夹中。
class Picture
end
class Favorite
belongs_to :picture
belongs_to :user
end
我想知道哪个是添加登录的最佳位置(练习),以便将图片添加到他/她的收藏夹中。是否最好在PicturesController
中添加favorite
操作,根据其存在情况create
或delete
收藏,或者创建一个名为{{的单独控制器1}}并添加两个名为FavoritesController
和create
的动作?
答案 0 :(得分:1)
遵循 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