使用关注点时根据父资源设置范围
Set the scope based on parent resource while using concerns
我很好奇,有什么方法可以在 Rails 中使用关注点时基于父资源设置嵌套资源的范围?
concern :commentable do
scope module: ??? do # either :posts or :messages
resources :comments
end
end
resources :messages, concerns: :commentable
resources :posts, concerns: :commentable
我希望我的路线是这样的:
Path Controller
/messages/:message_id/comments/:id messages/comments#show
/posts/:post_id/comments/:id posts/comments#show
不过我也想用concerns来减少重复
谢谢!
您可以使用 Rails Polymorphism 来适应这种情况,其中 comment
也可以 belong_to
任何其他模型...post
,video
, user
等
精彩Railscasts.......值得一看
原来方法 concerns
可以采用选项的散列。
concern :commentable do |options|
scope module: options[:module] do
resources :comments
end
end
resources :messages do
concerns :commentable, module: :messages
end
resources :posts do
concerns :commentable, module: :posts
end
我从您的解决方案开始使用选项散列,但事实证明我真的非常需要这种模式,所以我针对该特定情况制定了另一个解决方案:
concern :archivable do
scope module: parent_resource.plural do
resources :archiving, only: [:create, :destroy]
end
end
...
resources :messages , concerns: [ :archivable ]
resources :users , concerns: [ :archivable ]
我很好奇,有什么方法可以在 Rails 中使用关注点时基于父资源设置嵌套资源的范围?
concern :commentable do
scope module: ??? do # either :posts or :messages
resources :comments
end
end
resources :messages, concerns: :commentable
resources :posts, concerns: :commentable
我希望我的路线是这样的:
Path Controller
/messages/:message_id/comments/:id messages/comments#show
/posts/:post_id/comments/:id posts/comments#show
不过我也想用concerns来减少重复
谢谢!
您可以使用 Rails Polymorphism 来适应这种情况,其中 comment
也可以 belong_to
任何其他模型...post
,video
, user
等
精彩Railscasts.......值得一看
原来方法 concerns
可以采用选项的散列。
concern :commentable do |options|
scope module: options[:module] do
resources :comments
end
end
resources :messages do
concerns :commentable, module: :messages
end
resources :posts do
concerns :commentable, module: :posts
end
我从您的解决方案开始使用选项散列,但事实证明我真的非常需要这种模式,所以我针对该特定情况制定了另一个解决方案:
concern :archivable do
scope module: parent_resource.plural do
resources :archiving, only: [:create, :destroy]
end
end
...
resources :messages , concerns: [ :archivable ]
resources :users , concerns: [ :archivable ]