Ruby on rails вывести данные с определенным параметром?
Имеется модель order, в модели есть свойство active. Мне надо выводить как вообще все заказы, так и только те которые активны на данный момент, как это сделать в рамках модели REST?
al_gon: В гайдах говорят, можно добавить ещё RESTful actions - guides.rubyonrails.org/routing.html#adding-more-re...
Я предположила, что вопрос задан исходя из REST имеено в применении к рельсам.
По мне так это более Rails-way, чем /orders?active=true
Анна Буянова: Согласен, будучи разработчком под какой-то один фраймворк приходится жить с его правилами.
Тут я Вам не могу возразить (Я не из мира Ruby/Rails), возможно это Rails-way.
Но это не REST.
REST это ресуерсоориентированно. То есть за URL's скраваются сущносни или ресурсы.
Мы можем иx создовать (POST), обновлять (PUT), удалять (DELETE) или просто запрашивать (GET) есть они или нет, и как что они из себя преставляют.
И все запросы состовляются на основе определенной конфенции или формата если хотите. Это немного наивная формулировка.
В данном вопросе речь идет о последнем.
У нас есть какая-то коллекция (orders) и мы хотим отфильтровать только по атрибуту active.
По этому так ${host}/api/rest/orders?activ=true
Если бы мы запрашивали состояние конкретного товара (н.п. id=15) из конкретного заказа (н.п. id=5),
тогда так ${host}/api/rest/orders/5/product/15
al_gon: огорчу вас, но, хотя REST это очень глупый и сбивающий термин, и хотя с какой-то стороны
${host}/api/rest/orders?activ=true
походит под это определение, но более верным и Rails-way был бы вариант создать ресурс ActiveOrders и смотреть его индекс:
/active_orders
al_gon: К сожалению, не существует ни одного сколько нибудь популярного приложения, полностью соответствующего RESTfull :)
Я просто к тому, что /active_orders - предпочтительнее /orders?active=true вне зависимости от контекста языка или фреймворка в плане ресурсного роутинга
al_gon: именно так, как вы подумали, /inactive_orders. Особенно, если это ресурс (например, как вкладка почты: лучше сделать /inbox_emails, /unread_emails, etc вместо /emails?type=inbox.
Конечно, если у вас очень большой список фильтров - то приводить к REST-виду их никто не будет, но из этого и вытекает - что нет ни одного сколько нибудь популярного бизнес-приложения полностью соответствующего RESTful интерфейсу