我很好奇,有没有办法在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
但我也想使用关注点来减少重复。
谢谢!
答案 0 :(得分:1)
结果方法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
答案 1 :(得分:1)
我使用选项哈希开始使用您的解决方案,但事实证明我真的非常需要这种模式,所以我为该特定情况制定了另一种解决方案:
concern :archivable do
scope module: parent_resource.plural do
resources :archiving, only: [:create, :destroy]
end
end
...
resources :messages , concerns: [ :archivable ]
resources :users , concerns: [ :archivable ]
答案 2 :(得分:0)
您可以使用Rails Polymorphism来适应comment
可以belong_to
任何其他模型的情况...... post
,video
,{{ 1}}等等
精彩Railscasts .....值得关注。