質問編集履歴
1
情報を追記いたしました
    
        title	
    CHANGED
    
    | @@ -1,1 +1,1 @@ | |
| 1 | 
            -
            Rails | 
| 1 | 
            +
            Rails  取得したデータの整形
         | 
    
        body	
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            Rails で質問させてください。
         | 
| 2 | 
            -
            異なる2つのテーブル(モデル)を union で結合して取得した下記 | 
| 2 | 
            +
            異なる2つのテーブル(モデル)を union で結合して取得した下記取得データの before のようなデータを下記取得データのafterような形に整形して取得することは可能でしょうか?
         | 
| 3 3 |  | 
| 4 4 | 
             
            やりたいこととしては、
         | 
| 5 5 | 
             
            ・"type" が "1" のデータは、"child_id", "child_name", "child_period", "child_note", "child_done", "child_order_number" を削除してしまう。
         | 
| @@ -9,7 +9,48 @@ | |
| 9 9 | 
             
            やり方をご教授いただけますと幸いです。
         | 
| 10 10 |  | 
| 11 11 |  | 
| 12 | 
            +
            ##model
         | 
| 13 | 
            +
            ```rb
         | 
| 14 | 
            +
            class Project < ApplicationRecord
         | 
| 12 15 |  | 
| 16 | 
            +
             | 
| 17 | 
            +
              has_many :todos, dependent: :destroy
         | 
| 18 | 
            +
              accepts_nested_attributes_for :todos, allow_destroy: true
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              has_many :tasks, dependent: :destroy
         | 
| 21 | 
            +
              accepts_nested_attributes_for :tasks
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              def self.getCombineTodos(project_id)
         | 
| 24 | 
            +
                sql = <<-EOS
         | 
| 25 | 
            +
                 (select '1' as type_flg, pt.pt_id as id, pt.name as name, pt.period, pt.note, pt.done, pt.order_number, 0 as child_id, 0 as child_name, 0 as child_period, 0 as child_note, 0 as child_done, 0 as child_order_number from (select project_todos.id + 100000000 as pt_id, project_id, period, project_todos.note, done, project_todos.name as name, order_number from project_todos  where project_todos.project_id = :project_id) as pt)
         | 
| 26 | 
            +
                  union
         | 
| 27 | 
            +
                  (select '2' as type_flg, pt.id + 200000000, pt.name, pt.period, pt.note, pt.done, pt.order_number, ptt.id as child_id, ptt.name as child_name, ptt.period, ptt.note as chile_note, ptt.done as child_done, ptt.order_number as child_order_number from project_tasks as pt
         | 
| 28 | 
            +
                   left outer join project_task_todos as ptt on pt.id = ptt.project_task_id where pt.project_id = :project_id) ORDER BY order_number ASC
         | 
| 29 | 
            +
                EOS
         | 
| 30 | 
            +
                find_by_sql([sql, { project_id: project_id }])
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            end
         | 
| 34 | 
            +
            ```
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            ##controller
         | 
| 37 | 
            +
            上記のmodel内のsqlで取得できるデータを、下記のメソッドで、フロント(Vue)側に渡します。
         | 
| 38 | 
            +
            ```
         | 
| 39 | 
            +
            # todoとtaskをまとめて同列にして取得
         | 
| 40 | 
            +
                   def combine_todos
         | 
| 41 | 
            +
                    project = Project.getCombineTodos(params[:id])
         | 
| 42 | 
            +
                    
         | 
| 43 | 
            +
                    render json: {
         | 
| 44 | 
            +
                      status: 'SUCCESS',
         | 
| 45 | 
            +
                      message: '',
         | 
| 46 | 
            +
                      data: project
         | 
| 47 | 
            +
                    }
         | 
| 48 | 
            +
                   end
         | 
| 49 | 
            +
            ```
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            ##取得データ
         | 
| 52 | 
            +
             | 
| 53 | 
            +
             | 
| 13 54 | 
             
            ```before
         | 
| 14 55 | 
             
               "data":[
         | 
| 15 56 | 
             
                   {
         | 
| @@ -183,6 +224,9 @@ | |
| 183 224 | 
             
                ]
         | 
| 184 225 | 
             
            ```
         | 
| 185 226 |  | 
| 227 | 
            +
             | 
| 228 | 
            +
             | 
| 229 | 
            +
             | 
| 186 230 | 
             
            ####捕捉
         | 
| 187 231 | 
             
            ruby-2.6.2
         | 
| 188 232 | 
             
            Ruby on Rails 5.2.3
         | 
