2016-11-18 5 views
1

シンプルなショーを設定するときは、すべてのものを見ることができます。操作を介してすべてのレコードを取得して表示する

操作

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デシベルからすべてのものを得るために働くが、そのIDを経由して1を取得する: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 
関連する問題