我当前的项目是制作日记应用,用户可以登录并发布可以链接评论的文章。因此,实现此项目的非常自然的方式就像
resources :users do
resources :articles do
resources :comments
end
end
Class User < ActiveRecord::Base
has_many :articles
end
Class Article < ActiveRecord::Base
belongs_to :user
has_many :comments
end
Class Comment < ActiveRecord::Base
belongs_to :article
end
但是,rails指南说资源不应该嵌套多个级别。通过这种关系,我如何避免使用两级嵌套资源?
答案 0 :(得分:2)
查看Rails指南:http://guides.rubyonrails.org/routing.html#nested-resources部分2.7.2浅嵌套。 E.g:
resources :articles do
resources :comments, shallow: true
end
答案 1 :(得分:1)
要避免这种情况,您需要使用Shallow Nesting
。 rails指南提供了有关如何执行此操作的完整教程。还有很多关于stackoverflow的问题。以下是一些链接:
http://guides.rubyonrails.org/routing.html#nested-resources
When using shallow routes, different routes require different form_for arguments
Rails 4 [Best practices] Nested resources and shallow: true
https://railsforum.com/topic/1431-best-practices-nested-resources-and-shallow-true/
如果您仍然遇到任何问题,那么您应该询问stackoverflow。