0

В моем проекте у меня есть модель страниц. В этой модели у меня есть следующие методы для получения объектов из базы данных:Маршруты только для выбранной группы ресурсов

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 

И мой вопрос: Можно установить в рельсы маршрутизации иметь маршруты только для опубликованных страниц или что-то подобное?

ответ

1

Я не знаю, если я понимаю твой, но Вы можете иметь somenthing так:

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

Таким образом, Вы будете иметь страницы/опубликованные и неопубликованные страницы/маршруты.

Если Вы хотите, чтобы проверить статус страницы «опубликована», Вы можете сделать это в своем шоу acction:

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

Однако лучший способ поместить выше кода в «перед фильтром».

0

Спасибо за ответ. Это не совсем то, что я хочу. Я попробую объяснить это другими словами. Так что в моем Databse у меня есть 2 страницы объектов:

1: ID: 1, имя: "Издатель", состояние: "опубликовано" 2: ID: 2, название: "Неопубликованные", статус: "неопубликованные"

и у меня есть в моих маршрутах: ресурсов: страницы

, и теперь я могу получить доступ в браузере страницах/1 и страница/2, и он покажет мне эти страницы. Моя цель - только опубликовать страницы. Поэтому, когда я посещаю страницы/2, он перенаправляет меня обратно.

+0

Я добавил несколько строк к моему ответу. – Jacek

Смежные вопросы