

joinsで結合したとき、結合するテーブルの列も全て取得するのに下記のように書くと思いますが、

[code]

    User.joins(:comments).select("*")
    
[/code]

"*"の部分をシンボルで書く方法はありますか？  
:allでいけるかなと思いましたが、だめでした。。。


CC BY-SA 4.0
2019-01-20T02:56:45.877
52129
2019-01-21T05:31:41.307
2019-01-21T05:31:41.307
question
ruby-on-rails
ActiveRecordのselectメソッドの"*"をシンボルで書く方法はありますか？


select を文字列で実行する際には、その中身が、 SQL 分の SELECT のカラムの式として適切である必要があります。

なので、おそらく次のようにすると select 自体は実行できると思います。

[code]

    User.joins(:comments).select('users.*', 'comments.*')
    
[/code]

また、一般的に rails で join された結果の中身も取得したいときは、 `includes` などがよく使われると思います。

[code]

    User.includes(:comments)
    
[/code]

こうすることで、例えば今回であれば、取得された user レコードに対して、

[code]

    user.comments
    
[/code]

のような形で、 Comment オブジェクトたちを取得できます。


CC BY-SA 4.0
2019-01-20T09:41:52.380
52133
2019-01-20T12:42:33.267
2019-01-20T12:42:33.267
754
754
52129
answer