如何避免Rails中的嵌套资源

时间:2015-02-10 11:58:44

标签: ruby-on-rails nested-resources

我当前的项目是制作日记应用,用户可以登录并发布可以链接评论的文章。因此,实现此项目的非常自然的方式就像

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指南说资源不应该嵌套多个级别。通过这种关系,我如何避免使用两级嵌套资源?

2 个答案:

答案 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。