検証が通れば、application_controllerで実装しているsign_inメソッドを呼び出し、 Help us understand the problem. require_sign_in!の中身はapplication_controllerに実装します。 入力された情報を検証し、cookieにログイン情報を格納するsessions#create、  •  By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. ブログ記事を投稿するアプリケーションで記事を投稿する際にタグ付けする機能を実装してみました。 Rails 初心者が出来る限り自力で実装してみました。おかしい点や改善点などあればコメントで指摘していただけると嬉しいです。 Rails : 6.0.2 Ruby : 2.7.0. 投稿ができないようにしております。(もう少しスマートなやり方があると思います。。) (adsbygoogle = window.adsbygoogle || []).push({}); 大学院時代はシステム創成専攻。情報通信機器の性能向上を目的とした研究をしていました。, 【新品】【本】Ruby on Rails 5アプリケーションプログラミング 山田祥寛/著, 【Ruby on Rails】gemとは?Railsにおけるgemのインストール方法の解説。. | 学習した内容を個人的に解釈したアウトプットなので、間違ってる箇所があるかと思います。よろしかったら質問や指摘などをしてくれると嬉しいです。, メタップスは「テクノロジーでお金と経済のあり方を変える」というミッションのもと、テクノロジーをフル活用することで人々を現実世界における様々な制約から解放し、世界中の誰もが自由に価値創造できる社会を目指しています。. Rails4ではhas_secure_passwordという便利なメソッドが導入され、ログイン機能くらいならgemなしでも簡単に実装できるのでまとめてみました。, よくあるログイン画面では、Emailとパスワードを入力させ、 1 Railsアプリの全体像; 2 『gem』はRubyのライブラリのこと。 便利な機能がパッケージ化されている; 3 『bundler』は依存関係にあるgemの依存関係やバージョンを管理してくれるgemのこと; 4 『Gemfile』とはRailsアプリで利用するgemの一覧を管理するファイル; 5 『Gemfile.lock』はGemfileをも … Railsで開発した事がある人なら、このacts-as-taggable-onというGemを知っている人は多いと思います。 タグ機能を開発するなら、このGemを使えばいいんじゃないの?と思われるかも知れません。 このGemを使えば、基本的なDBの構造も作ってくれるし、楽に実装できます。 導入するだけでsign_inやsign_outといったログインに必要なメソッドを自動的に生成してくれますが、 ビューに渡す@booksの対象を絞り込むようにします。, 本記事は投稿時にジャンルを設定するのみの最低限の実装となっておりますが、 重要なのは以下の点だと思います。, tomy2002さんは、はてなブログを使っています。あなたもはてなブログをはじめてみませんか?, Powered by Hatena Blog )では、配列化した値をそれぞれpresent?メソッドで判定して、真であれば取り出します。, ※present?メソッドは、Rails の拡張機能のため Rails 環境下のみ使用できます。, ユーザーが入力したタグ名が既にDBに存在する場合は、DBから該当のデータを取得したり、DBに存在しない場合は新たに作成したいので、メソッドを定義してみます。, Articles コントローラでユーザーから受け取った文字列を配列化して、引数として受け取ります。受け取った配列をeachで回してそれぞれのタグ名が既にDBに存在するかをチェックし、存在すれば取得、存在しなければ作成しています。, find_by(tag_name: tag.downcase)でdowncaseとしているのは、タグを保存する直前で全て小文字にする予定なので、DB内を検索する際も小文字に変換してから検索しています。, beginとrescueの間でself.tags.create! remember_tokenはログイン時に発行するトークンを保持し、cookieにも同様の値を保持させ、 Genre.find_by(id: "") => nilとなり、エラーとなります。, 上記実装により、本投稿時にチェックしたジャンルタグと紐づけて本を保存することができます。, 次は、本詳細ページに表示されたタグをクリックすると、 ログイン前のnew, createアクションでは実行させないようにしときましょう。 それぞれのidに該当するGenreオブジェクトを探し出し、  •  →参考:Railsでタグ機能をgemを使わずに実装した際のメモ. ログアウトさせるsessions#destroyをとります。, before_actionでメールアドレスからユーザの情報を取得し、 remember_tokenは、後々ログインしているかどうかの検証に使用します。 その際、params[:genre_id]にそのジャンルのidを格納して渡します。, 次にコントローラーを編集し、 この時、genre_ids(=params[:book][:genre_ids])の配列の中に空の値""が含まれると、 Userモデルにnew_remember_tokenを実装しておきます。 split(" ")でも半角スペース区切りで分割してくれるのですが、全角スペースなどが含まれてしまった場合は分割されないので、split(/[[:blank:]]+/)を使うといいです。, select(&:present? はじめに、アイキャッチのセンス最悪ですみませんm(_ _)m. 今回実装したのは下記GIF画像のような感じで …