def create @user = User.new(user_params) file = params[:user][:image] 画像ファイルの取得. Railsでomniauth-twitterを利用してTwitter認証を実装する, 【22新卒】11/24(火)自社開発のおもしろさを語るオンラインイベントを開催します!. Rails 5.2.2; devise 4.5.0 . Ruby on Rails ユーザー登録:sessionに入っているdeviseのpasswordを... RailsでOauthTwitterでの新規登録時に取得したデータをActiveStorageにat... 回答 受け取った画像データが空ではない場合 備忘録として残します。 deviseをインストールして、ユーザ管理画面を実装した際に デフォルトだとパスワードの文字数は6文字から128文字になっています。 変更する場合は以下のファイルと設定値を変更すれば変更できます。 config/initializer/devise.rb config.password_leng… メソッドを作成しました [Ruby on Rails] validates numericality で nil はチェックしない方法 [Rails] ActiveRecord とDBの型の対応関係 受け取った画像データが空ではない場合 備忘録として残します。 deviseをインストールして、ユーザ管理画面を実装した際に デフォルトだとパスワードの文字数は6文字から128文字になっています。 変更する場合は以下のファイルと設定値を変更すれば変更できます。 config/initializer/devise.rb config.password_leng…. 今回は画像をアップロ[…] 【Ruby on Rails】deviseのomniauthのTwitter認証を使ってログインしたときにプロフィール画像をする方法 2018.12.10. (とはいえ基本 “User” でいいと思っている。ログイン部分だし。), routes.rbには先に入力した root と↑が書かれている状態になっていればOKです。, ちなみに先の手順のモデル生成より先にこっちやってしまうと(routes に↑を書いた状態で rails g devise User をしちゃうと)エラーになるので注意。, (in block in load_missing_constant': uninitialized constant User (NameError)とかになる), どのへんって?今回はhome controllerというのを作ってroot_pathにしているので、home_controllerに貼り付けてみましょう。すなわち, こうしておくと、home_controllerのアクションに飛んできたものはすべてログイン状態でないとログイン画面に飛ばされる、という設定になります。, どうなっているかhttp://localhost:3000/にアクセスしてみましょう。, もしundefined method devise_for' for #みたいなエラーが出たら一度 rails s し直してください。それで解決するはずです。, http://localhost:3000/、つまりroot_pathですから home_controller の indexアクション にアクセスしているはずなのですが、URLを見てみると http://localhost:3000/users/sign_in になっていると思います。, これは最後に設定した before_action :authenticate_user! どちらもクオテーションで囲う必要はありません。, herokuにアプリをデプロイする場合は下記のコマンドでherokuのサーバーに環境変数を設定できます。, config/environments/development.rbを編集し、開発環境でS3が使えるよう変更をします。 今回は画像をアップロ[…] 【Ruby on Rails】deviseのomniauthのTwitter認証を使ってログインしたときにプロフィール画像をする方法 2018.12.10. 42行目のコードを「local」から「amazon」に変更します。, Pikawakaが許可なくTwitterやFacebookに投稿することはありません。, # Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key), # access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>, # secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>, # Remember not to checkin your GCS keyfile to a repository, # credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>, # Use rails credentials:edit to set the Azure Storage secret(as azure_storage:storage_access_key), # storage_account_name: your_account_name, # storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>, # mirrors: [ amazon, google, microsoft ], https://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html, Active Storageは、ファイルアップロードを簡単に実装できるgemのこと. プロフィール画像が存在する場合は表示し、存在しない場合はデフォルト画像を表示する Railsはこのリクエストをphotosコントローラ内のdestroyアクションに割り当て、paramsハッシュに{ id: '17' }を含めます。. Ruby on Railsで画像をアップロードする方法を紹介しています。「CarrierWave」「Rmagick」という2つのgemを用いるため、各gemのインストール方法から使い方までカンタンに説明しました。画像を添付した投稿や、ユーザーのプロフィール画像設定などに応用できます。 1 / クリップ 画像の情報は複雑です。現状のコードだとただの文字列を送信している形になります。, 下記の記事のように実装してみてはどうでしょうか? Railsチュートリアルでは、学習の為、Gemを利用せずに自力で実装していますが、deviseのような便利なGemで簡単に実装する場合も多いので実際にやってみます。 全体の流れは、こんな感じ。 1.Rails への devise の導入; 2.設定ファイル; 3.deviseのviewを生成; 4.modelを生成. def create @user = User.new(user_params) file = params[:user][:image] 画像ファイルの取得. Rails 5.2.2; devise 4.5.0 . この「local」の部分はどこで定義されているかというとconfig/storage.ymlというファイルに書かれています。, これをみるとlocalの時は使用するサービスがDisk、つまりローカルのディスクになっています。 Railsのリソースフルルーティングでは、(GET、PUTなどの) 各種HTTP動詞 (verb) と、コントローラ内アクションを指すURLが対応付けられます。 まずはactive strageをS3に対応させるため、各種ファイルの編集を行います。, amazonの行をコメントアウトを外し、コードを反映させるようにします。 deviseを導入の仕方を学び、デフォルトのままだとユーザーフレンドではないと思い、deviseのカスタマイズをしようと思います。 ... rails 5.2.3 devise 4.7.1. gemのインストール. 以下、ターミナルに表示されたログとbinding.pryの結果です。, teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。, 評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。, 上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。, 一度file_fieldで画像を送信してパラメータをみてみて欲しいのですが renderメソッドの使い方を初心者向けに解説しています。renderメソッドはビューをレスポンスとして返すという役割を持っていますが、ビューとコントローラーでは使い方や記述方法が異なるので、この機会におさらいしておきましょう。 プロフィール画像 画像を保存するためのコード。 original_filenameはrailsに定義されているメソッド。 user_controller.rb. teratailを一緒に作りたいエンジニア, https://qiita.com/soehina/items/fa1893fff53fd9baaf60. Ruby on Railsの知識をさらに深めるために、基本になりそうな「devise」というgemを使ってみたので、今回はアプリケーションを作る第一歩となる「rails new」から「devise」の実装までを紹介します。, deviseとは、ユーザー登録やログイン、パスワードの再発行、アカウントロックなどの機能を簡単に実装できるgemです。, プロジェクトごとにRubyのバージョンが違ったり、使うgemが違ったりするので、他のプロジェクトやシステムの環境に影響を与えずに新プロジェクトを作りたい人向けです。基本的にはこのページの通りに進めていきます。, (bundler をインストールしている前提なので、インストールしていない人は、gem install bundler を実行してインストールしておく必要があります。), 後ろの --path vender/bundle オプションをつけ忘れないように注意が必要です。このオプションをつけることで、プロジェクトの vender/bundle 以下にgemが格納されます。, また、一度オプションをつけてインストールしたら、次回以降はつけなくても vender/bundle 以下に格納されるようになります。, 格納したgemは bundle exec をつけることで呼び出せるので、ここから先のコマンドは bundle exec をつけます。, 私は自分のアプリケーション用に rails new の部分は下記のようにオプションをつけて実行しました。使用できるオプションは、$ rails new -h で確認できます。, $ bundle exec rails new . ページが出来たら、config/routes.rb のrootパスを設定します。, app/views/layouts/application.html.erb の タグの中身を編集します。, これを設定すると、ログイン後に「ログインしました」というようなメッセージが出るようになります。, とターミナルで実行すると、app/views/devise フォルダに必要なviewが自動で作成されます。自分でviewを編集することも可能です。, まず、下記のコマンドを実行し、deviseでログインするモデルを作成します。今回はUserで進めていきますが、AdminやMemberなど任意の名前で大丈夫です。, 今回は変更せずに進めますが、公式ページのREEDMEの目次の上に利用できるモジュールの詳細が記載されているので、必要に応じて利用するモジュールを追記してください。, モデルを作成したときに 「日時_devise_create_users.rb」というマイグレーションファイルも生成されているので、モジュールを追加した場合は編集が必要です。, モジュールを追記していたら、追記したモジュールに該当する部分はアンコメントします。, 例えば、Trackableを追加していたら、##Trackable以降の6行のアンコメントが必要です。, まだログイン画面へのリンクがないので、app/views/welcome/index.html.erb を編集しておきます。, (user_signed_in?