仅为选定的资源组路由

时间:2014-02-17 11:00:16

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2

在我的项目中,我有页面模型。在这个模型中,我有以下方法从数据库中检索对象:

def self.published
  where('published_at <= ?', Date.today ).where('publication_end >= ?', Date.today).where(status: "published")
end
def self.unpublished
  where('published_at > ? or status = ? or publication_end <=', Date.today, "unpublished", Date.today)
end

我的问题是:可以在rails路由中设置仅针对已发布页面或类似内容的路由吗?

2 个答案:

答案 0 :(得分:1)

我不知道我是不是会让你失望,但你可以像这样痴心:

resources :pages do
  collection do
    get 'published'
    get 'unpublished'
  end
end

因此,您将拥有页面/已发布和已发布的页面/未发布的路径。

如果您想检查页面状态是否已“发布”,您可以在show acction中执行此操作:

@page = Page.find(param[:id])
if @page.status != 'published'
  redirect_to .....
end

但是,更好的方法是将上面的代码放在“过滤前”中。

答案 1 :(得分:0)

感谢您的回复。这不是我想要的。换句话说,我会试着解释一下。 所以在我的数据库中我有2页对象:

1:id:1,名称:“已发布”,状态:“已发布” 2:id:2,名称:“未发布”,状态:“未发布”

我的路线中有: 资源:页面

现在我可以在我的浏览器页面/ 1和页面/ 2中访问它,它会显示我的页面。 我的目标是只能访问已发布的页面。因此,当我访问pages / 2时,它会将我重定向回来。