2014-01-12 2 views
1

В настоящее время я пишу приложение для рельсов, у которого есть обычный ресурс, такой как объекты. Однако я хотел бы сделать мои ресурсы синхронизируемыми. В моем веб-приложении используется автономное хранилище Интернета для кэширования результатов с сервера (пользователь не может изменять данные на сервере, упрощая синхронизацию). Когда я извлечь с сервера, он возвращает хэш ответ, как:Настроить/изменить маршрутизацию ресурсов Rails 3

{ 
    :new => [...] 
    :updated => [...] 
    :deleted => [...] 
} 

Это все хорошо, пока я не хочу иметь регулярные выборки метод, который не делает какое-либо синхронизация и просто возвращает массив из моделей

Теперь мой вопрос: я хочу создать метод в моем файле routes.rb, который устанавливает маршруты, чтобы у меня был маршрут до synced_index и index. В идеале, я был бы в состоянии сделать что-то вроде этого:

synced_resources :plans 

И тогда все регулярных маршрутов ресурсов будут созданы плюс несколько дополнительных из них, как synced_index. Любые идеи о том, как лучше всего это сделать?

Примечание: Я знаю, что вы можете изменять ресурсы с помощью синтаксиса do...end, но я хотел бы абстрагировать это на функцию, так как мне пришлось бы делать это с большим количеством моделей.

ответ

2

Вы можете легко добавить больше глаголов к успокоительному маршруту:

resources :plans do 
    get 'synced_index', on: :collection 
end 

Проверьте guides для получения дополнительной информации по этому вопросу.

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

def synced_resources(*res) 
    res.each do |r| 
    resources(r) do 
     get 'synced_index', on: :collection 
    end 
    end 
end 

Wrap выше метода в модуле будет включен в ActionDispatch :: Routing :: Mapper.

+0

Закончено помещать его в инициализатор, который необходим, поскольку он должен быть выполнен до того, как маршруты будут нарисованы. Благодаря! –

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