2016-11-18 8 views
1

У меня возникли проблемы с trailblazer при настройке простого представления всех видов вещей.получить все записи через операцию и показать в поле зрения

операция

class Thing < ApplicationRecord 
    class ShowAll < Trailblazer::Operation 
    include Model 
    model Thing, :all #why :all is not working here? 

    def process 
    end 
    end 
end 

контроллер

class PageController < ApplicationController 
    def index 
    run Word::ShowAll 
    end 
end 

почему :all не работает для получения всех вещей из БД, но :find работает, чтобы получить один через свой идентификатор?

ответ

1

Лучшее место, чтобы задать вопросы TRB на самом деле на канале Github.

Я не уверен, где вы нашли этот пример, поскольку он не должен работать AFAIK: find - ярлык, на который я верю, я его никогда не использовал.

Вся ваша логика должна быть определена внутри метода процесса. http://trailblazer.to/gems/operation/1.1/api.html#process

Сказав это, попытка получить все записи без какой-либо разбивки на страницы - это действительно плохая идея, если вы на 100% не уверены, что ваш стол не будет расти за несколько десятков записей. Если вы не знаете, что у вас нет большой нагрузки. Таким образом, определение такого ярлыка опасно.

1

Вызов Trailblazer::Model#model, поскольку вы делаете это всего лишь ярлык для переопределения метода TrailBlazer::Operaration#model!. Так что вы, кажется, нужно сделать, это:

class Thing < ApplicationRecord 
    class ShowAll < Trailblazer::Operation 
    def model!(params) 
     Thing.all # add any filtering or pagination here 
    end 
    end 
end 

И в контроллере вызова present вместо run так, что он устанавливает модель, но не вызывает process метод работы.

class PageController < ApplicationController 
    def index 
    present Word::ShowAll 
    end 
end