2

我对 Rails 3 有一般的结构问题,新的 routes.rb 让我有点困惑。感谢您的任何帮助或指导。

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

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

我的部分.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 :replies, :through => :topics”。然后在我的主题中,我需要添加“belongs_to :user”。我相信reply.rb 保持不变?

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

4

1 回答 1

2

您可以将用户排除在外。只需将 devise_for :users 包含在您的路线之上,而不将其包含在您的资源块中。

一个用户有很多话题,也有很多回复。主题和回复都属于用户。

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

于 2011-04-06T07:14:38.093 回答