Rails 3嵌套资源与用户(Devise)结构

时间:2011-04-06 04:32:13

标签: ruby-on-rails-3 devise nested-resources

我遇到了Rails 3和新路由的一般结构问题.rb让我有点困惑。感谢您提供任何帮助或指导。

我有一个嵌套资源的论坛应用程序。有部分,主题和回复。 routes.rb结构如下所示:

resources :sections do
   resources :topics do
     resources :replies
   end
end

我的section.rb:

  has_many :topics
  has_many :replies, :through => :topics

我的主题.rb:

  belongs_to :section
  has_many :replies

我的回复.rb:

  belongs_to :topic

这非常有效。现在我在这里感到困惑。

我使用Devise添加了一个用户控制器,并且有一个工作用户名登录/注销系统。我正在尝试将'current_user'与回复和主题相关联。我想我对如何修复模型有一个好主意,但我对在routes.rb文件中做的事情感到很困惑。

对于user.rb,我相信我需要添加“has_many:topics”和“has_many:reply,:through =>:topics”。然后在我的主题中,我需要添加“belongs_to:user”。我相信reply.rb保持不变?

至于routes.rb我有点难过。如果我编辑路由并向其添加用户,我会得到一个类似sectionid / username / topicid /的路径,但我不一定需要在这样的路由中存储用户名。所以我将用户嵌入到部分和主题之间,或者我可以将用户从routes.rb文件中删除。

1 个答案:

答案 0 :(得分:2)

您可以让用户退出路径。只需在您的路径上包含devise_for:users,而不将其包含在资源块中。

用户有很多主题并且有很多回复。主题和回复都属于用户。

您需要对控制器进行更多更改。您需要添加一个before_filter来检查用户是否经过身份验证,以及大多数控制器方法的更改,以检查用户是否不仅经过身份验证,还获得了授权,例如对于编辑查找,你可以执行current_user.replies ....你可以在这里阅读更多内容(我自己的页面):http://www.communityguides.eu/articles/4