#実行環境
- Rails 5.2.4.2
- Vue.js 2.6.1
#やっていること
Rails で Vue.js を利用して、ログイン中のユーザーの情報を表示するコンポーネントを作成しています。(画像は参考イメージ)
RailsからVue.js側にデータを渡すにあたり、コントローラーから、次のようにデータを渡しています。
Ruby
1class Api::ApplicationController < ApplicationController 2 def current_user 3 render json: current_user 4 end 5end
解決したいこと
しかし、上記の方法だと/api/current_user
(ルーティングは若干調整済)にアクセスした際に、次のような形でユーザー情報が表示されてしまいます。
{"id":3, "name":"Test User", "email":"testuser@gmail.com", "password_digest":"$2a$12$DEHHl/czPM7pIBVK/4A1mulOKcB/msTSPDnMUqBmLEMSDI50v5/Vq", (...中略), "created_at":"2020-10-09T17:12:40.268+09:00", "updated_at":"2020-10-09T17:12:40.268+09:00"}
生々しい情報が多いので、表示する情報を制限したいです。
試したこと
複数ユーザーの情報であれば、select
メソッドで特定のカラムだけ取り出せるのはわかりました。
$ rails c $ users = User.all $ users.select(:name, :email) # => [#<User:0x00007fe6eb1529d8 # id: nil, # name: "テストユーザー1", # email: "testuser@gmail.com">, ##<User:0x00007fe6eb1527f8 # id: nil, # name: "テストユーザー2", # email: "testuser2@gmail.com">, # (後略...)]
ユーザーが一人の時に、特定のカラムだけ取り出す方法がわかりません。dig
, pluck
など思いついたメソッドは試しています。良い方法をご存じの方、教えていただけましたら嬉しいです。
補足
Vue.js側でuser['name']
のような形でデータを取り出したいため、できればデータはkey, valueのある形で取り出したいです。
Api::ApplicationController
にリダイレクト設定は付けたいと思います。
配列に一つ一つ必要な情報を入れていくメソッドを書くことも考えましたが、より簡便な方法があればと思い、質問を投稿いたしました。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/14 03:09