ブログを報告する, 登録ユーザの確認 SELECT user, host FROM user; 権限の表示 SH…. (tag_name: tag)としているのは、もしバリデーションエラーなどで保存が失敗した時、例外処理を返してrescue内のnilを返すことで保存されず次の処理が実行されるようにしています。, "Rails".downcase == "rails"としたいのでタグを保存する直前で全て小文字に変換してから保存するようにbefore_saveを使っていきます。, 2.のAricles コントローラの作成で同時に生成された new.html.erb と show.html.erb を編集していきます, 記事やタグの値を送信するフォーム(new.html.erb)と作成した記事を確認する記事詳細(show.html.erb)となります, 次はブログ記事とタグを作成・紐付けが完成したのでタグを使った検索機能を実装する予定なので、検索機能が実装できた時に更新したいと思います。, 学習内容を思い思いに投稿していきます。 (adsbygoogle = window.adsbygoogle || []).push({}); viewから受け取った値がifの条件にあるparams[images.idoltype]に入ります。, Imageテーブルからwhereメソッドでparamsの値(images_idoltype)と一致するレコードを全て取得できます。, 次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。, 実績が欲しいので、コーディング、Wordpress制作を初回無料で承ります!!(ボリュームによりますが。。), 【近況報告-2月】 プログラミング学習を独学で6ヵ月継続してみた手ごたえをまとめました。, 【Dairy】Introducing my favorite song!!【part2】. なるべくブラックボックスは少ない方がよいと思い、gemなしで実装しました。 Help us understand the problem. 入力されたパスワードを暗号化し、DBに登録されているpassword_digestと一致するか検証します。 【多対多】の関係であるため、中間テーブル(BookGenreモデル)を設定します。, チェックされたGenreオブジェクトのidが配列となって[:book][:genre_ids]に格納されます。 【Dairy】Introducing my favorite song!!【part1】. しかし、gemは導入がとても簡単ですが、以下のようなデメリットもあります。 require_sign_in!の中身はapplication_controllerに実装します。 それぞれのidに該当するGenreオブジェクトを探し出し、 remember_tokenを作成し、userモデルとcookieにセットし、ログイン後の画面に遷移します。 今回も同様にEmaiとパスワードを持つUserモデルを例にとります。, またユーザの登録時に、パスワードと確認用のパスワードを入力させ、 (adsbygoogle = window.adsbygoogle || []).push({}); 大学院時代はシステム創成専攻。情報通信機器の性能向上を目的とした研究をしていました。, 【新品】【本】Ruby on Rails 5アプリケーションプログラミング 山田祥寛/著, 【Ruby on Rails】gemとは?Railsにおけるgemのインストール方法の解説。. self.genresに格納(登録)していきます。 # find_tag に nil が代入され nil となるのでタグの作成が始まる, タグをアルファベットの大文字・小文字で区別させたくないので、タグが保存される前にアルファベットを全て小文字に変換して保存する, you can read useful information later efficiently. Help us understand the problem. 学習した内容を個人的に解釈したアウトプットなので、間違ってる箇所があるかと思います。よろしかったら質問や指摘などをしてくれると嬉しいです。, メタップスは「テクノロジーでお金と経済のあり方を変える」というミッションのもと、テクノロジーをフル活用することで人々を現実世界における様々な制約から解放し、世界中の誰もが自由に価値創造できる社会を目指しています。. include_hidden: falseのオプションを指定することにより、 Rails4ではhas_secure_passwordという便利なメソッドが導入され、ログイン機能くらいならgemなしでも簡単に実装できるのでまとめてみました。, よくあるログイン画面では、Emailとパスワードを入力させ、 remember_tokenはログイン時に発行するトークンを保持し、cookieにも同様の値を保持させ、 内容が一致すれば登録させる、というバリデーションをとります。, まずテーブルの作成ですが、mailとpassword_digestを用意します。 そのタグに該当する本の一覧を表示する機能を実装します。, 本詳細ページにジャンル名を表示させ、本一覧画面へのリンクとします。 条件としては@current_userがセットされているか。 タグをクリックするだけでそのタグに該当する本を一覧で表示させるところまでです。, 「本」は複数の「ジャンルタグ」を持ち、逆に「ジャンルタグ」も複数の「本」を持つ )では、配列化した値をそれぞれpresent?メソッドで判定して、真であれば取り出します。, ※present?メソッドは、Rails の拡張機能のため Rails 環境下のみ使用できます。, ユーザーが入力したタグ名が既にDBに存在する場合は、DBから該当のデータを取得したり、DBに存在しない場合は新たに作成したいので、メソッドを定義してみます。, Articles コントローラでユーザーから受け取った文字列を配列化して、引数として受け取ります。受け取った配列をeachで回してそれぞれのタグ名が既にDBに存在するかをチェックし、存在すれば取得、存在しなければ作成しています。, find_by(tag_name: tag.downcase)でdowncaseとしているのは、タグを保存する直前で全て小文字にする予定なので、DB内を検索する際も小文字に変換してから検索しています。, beginとrescueの間でself.tags.create! 【Dairy】It’s hard to learn a lot at work these days. Why not register and get more from Qiita? 以下のバリデーションがUserモデルに追加されます。, また、それとは別にメールアドレスを必須入力かつユニークになるようバリデーションを設定しています。, 入力されたパラメータを使用して登録をします。 例えば、タグの名前が英語、日本語、中国語に対応するものです。, acts-as-taggable-onのgemを使っても出来るだろうとは思うものの、その学習コストを考えると自分で作った方が簡単で早いのではないかと思っています。, もちろんGemを使う良い点もたくさんありますが、そのメリット・デメリットを比較して使うべきだと思っています。, 英語、日本語、中国語の3つの名前カラムを持つタグを実装していきます。 (name_en, name_ja, name_zh_cn), TagとPostのリレーションを保持するモデルです。(many-to-many 多対多の中間テーブル), 重複を避けるため、tag_id とpost_id にはユニークインデックスを作成します。, nameメソッドを追加して、簡単に多言語のタグ名を取得できるようにします。(該当する名前がnilの場合は、name_enにふぉーるばっくします。), Gemを使うことで、良いアプリケーションを作る事ができます。