窓際BLOG

プログラミングの学習メモや書籍の感想等を公開していきます。

RubyonRails

RubyonRails:collection_selectにデフォルト値を設定する

Railsには、データベースの値からselectタグを作るcollection_tagという非常に便利なメソッドがあるんですが、デフォルト値の設定方法で少しハマったので、そのやり方をメモしておきますφ(..) やり方 今回は、タスクにユーザーを割り当てる際に使用するセレ…

RubyonRails:検索条件を引き継いで検索結果のソート順を変更する

検索結果を指定したプロパティで並び変える際に検索条件を引き継いで、ソートする際に少しハマったのでやり方をメモφ(..) イメージは下記みたいな、検索後のタスクの一覧を期限の降順で並び替えるような機能を想定してます(・∀・) 検索条件を引き継いでソー…

RubyonRails:form_tagを使って入力値がリセットされない検索フォームを作る

Railsでフォームを作る際にform_forを使うとページの再描画が発生しても入力値がリセットされませんが、form_tagを使うとリセットされてしまいます。。。 検索フォーム等では、form_tagを使用することが多いような気がするのですが、検索ボタンを押してもリ…

RubyonRails:acts-as-taggable-onのN+1問題を解決する

自分で運営しているサービスのタグ付け機能にacts-as-taggable-onを使っていたのですが、N+1が発生しまくってしまったので、その解決方法をφ(..)メモメモ acts-as-taggable-onのバージョンは下記の通りです。 $ gem list acts-as-taggable-on (5.0.0) 解決法…

RubyonRails:activerecord-importを使って複数レコードを一括登録する(BULK INSERT)

みなさん、こんにちは。まどぎわです(・∀・) バッチ処理等で複数のレコードを一括で登録する際にどのようなコードを書いていますか?今回は、そんなときに便利なactiverecord-importの使い方を調べたのでメモしておきますφ(..) activerecord-importの使い方 …

RubyonRails:ActiveRecord::Relationをto_aすると色々とはかどるかも知れない件

最近ActiveRecord::Relationをto_aすると色々とはかどるかも知れないという知見を得たのでメモしておきますφ(..) whereを使って取得した結果(ActiveRecord::Relation)をselectとか使って結果から特定の値を持つレコードを取ってこようとするとやDBアクセスが…

RubyonRails:Gemを使わずに画像アップロード処理を実装する

こんばんは、まどぎわですφ(..) 皆さんは画像アップロード処理はどうやって実装していますか? RailsだとCarrierWaveを使った実装がメジャーだと思いますが、今回はあえてGemを使わずに画像アップロード処理を実装する方法をメモしておきます。 ※railsのバー…

RubyonRails:最近頂いたコードレビューを整理してみました。

みなさん、こんばんは!まどぎわです(・∀・) 最近、ソースコードレビューを受ける機会があったので、指摘頂いた内容を復習も兼ねて備忘目的で下記に整理してみました。 また私が作ったRailsアプリケーション環境関連は下記の通りです。 category version rub…

RubyonRails:has_oneで1:1のAssociationを定義し、モデルを適切に分割するメモ

こんばんは、まどぎわです(・∀・) RailsアプリケーションでUserモデルにプロパティがモリモリマッチョになっていませんか?? 例えばこんな感じ。 Userモデル id email password name birthday sex job etc... こうなってくるとプロパティだけでなくて、User…

RubyonRails:Rails5アプリケーションにBootstrap4を導入する

みなさん、こんにちは。まどぎわです(._.) 最近、作成しているRailsアプリケーションにBootstrap4を導入してみたので、その手順をメモしておきますφ(..) 手順 環境情報 試した環境を下記に記述しておきます。 gem version rails 5.1.4 bootstrap 4.0.0 Gemの…

RubyonRails:脱.erb、Hamlのはじめの一歩

みなさん、Railsでアプリケーションを開発するときには、テンプレートエンジンは何を使っていますか? Railsではデフォルトだと.erbを使うことが多いと思いますが、今回はHamlを使ってみたので導入方法や使い方をメモしておきますφ(..) Hamlのはじめの一歩 H…

Railsチュートリアル、プログラミングスクールの後なにする?e-Navigatorで現役エンジニアにレビューを受けながらWebサービスを作ってみた!!

こんにちは!まどぎわです:D みなさん、Railsの勉強どうですか? Railsチュートリアルやプログラミングスクールで勉強した後、迷う人多いんじゃないかと思うんですが...私を含めて。。。 そんな人にオススメなサービス「e-Navigator」に参加してきたので、感…

DockerでRubyonRailsの環境を構築してみた

はじめに Dockerの勉強会に参加して少し、Dockerについて勉強しました。 tec.connpass.com せっかく勉強したので、Raisの開発環境をDockerで構築してみました(._.) まだまだわからないことだらけですが、とりあえず開発環境をDockerコンテナ上に構築・実行確…

Ruby on Rails:過去日・未来日を判定する

Railsで過去日・未来日判定を行う際に下記のような実装をしていたのですが、便利なメソッドがRailsに用意されていたので、φ(..)メモメモ ※Rubyでは使用出来ないので、注意してください(._.) # 生年月日に未来日は設定不可 def birthday_cannot_be_in_the_fut…

Ruby on Rails:自作アプリをTwitterカードに対応させる

Railsで作ったアプリケーションをTwitterカード対応させる手順をメモしておきますφ(..) Twitterカードとは下記のようなものです:D twitter.com 単純にURLリンクを貼る貼るよりも、より多くの情報を伝えることが出来ますね! 手順 前提 今回は、詳細ページで…

Ruby on Rails:複数のForm項目の値を配列形式でコントローラーに渡す

Viewの項目の値を配列形式でparamsに設定し、Controllerで使用する方法をメモしておきますφ(..) 手順 前提 今回は、下記のように複数のレコードに設定したCheckBoxの値を配列形式で設定し、Controller側で処理するケースを想定してます。 さらに具体的にいう…

Ruby on Rails:ModelのプロパティにEnumを使う※おまけ:ラジオボタンでEnumを扱う

Railsでステータス等の特定の値のリストを用いて値設定を行う場合にはEnumを使うと便利なので、手順をメモしておきますφ(..) ちなみにEnumはRails4.1から導入されたActiveRecordの機能なので、Ruby単独では使えない点に注意してください(._.) RubyでEnumっぽ…

Ruby on Rails:モデルに独自のバリデーションを実装する

Railsはvalidationを使って必須等の色々なデータの制約を付与することが出来ますが、それらに該当しない独自のvalidationを付与する方法をメモφ(..) 手順 テーマ:生年月日の過去日を不可にする 前提条件 独自のバリデーションを実装する 参考 手順 テーマ:…

RubyonRails:deviseのControllerをちょっとだけカスタマイズする

Moook(https://moook.herokuapp.com/)では、deviseで認証機能を作っています。 管理用にユーザーが新規登録されたらslack通知が行われるようにしたかったのですが、deviseはdefaultではコントローラーの実体のソースが無いので、一定の手順を踏む必要があり…

RubyonRails:Slack通知処理を実装する

Moook(https://moook.herokuapp.com/)を運用していて、毎日管理画面を確認するのがめんどくさかったので、新規ページが追加された時にSlackに通知が送られるようにしましたφ(..) その手順をメモしておきます。 やりかた gemのインストール Slackの設定 通知…

RubyonRails:deviseのcurrent_userの返り値をカスタマイズする

deviseのヘルパーメソッドcurrent_userの返り値がデフォルトだとnilになるが、 空のUserインスタンスを返したかったけどハマったので、やり方をメモφ(..) やり方 application_controller.rbでcurrent_userをoverrideする。 しかし、alias_method :devise_cur…

RubyonRails:kaminariを使ってページャーを簡単に実装する

開発中のサービス「いつもの更新、いつでも確認 | Moook」でページャーを実装する際に使用したgemkaminariの使い方をメモφ(..) github.com 使い方 gemのインストール 実装 Controller View ローカライズ おわりに 使い方 gemのインストール kaminariを使うに…

RubyonRails:Rails5で使えるデータ検索関連のメソッドをまとめてみた

現在、Railsブロンズ試験を受験してみようと思い、RubyonRails5アプリケーションプログラミングという本で勉強中なので、頭の整理も兼ねて学んだことをまとめてみるφ(..) Ruby on Rails 5アプリケーションプログラミング作者: 山田祥寛出版社/メーカー: 技術…

Ruby on Rails:インスタンス変数等をjavascriptに受け渡す方法

はじめに Railsで取得したデータを使ってChart.jsでグラフ描画する等、Railsで扱っている変数をjsに受け渡す方法をメモφ(..) ↓イメージはこんな感じ 手順 概要 取得データをJSONに変換し、HTML要素のdata属性に設定(viewに埋め込む) jsで設定した要素のdata…

Ruby on Rails:文字列の一部だけエスケープさせずにHTMLとして認識させる方法

はじめに 掲示板のアプリケーション等、特定の文字部分(>>3等)を<a></a>として認識させる方法をメモφ(..) ↓イメージはこういう感じ やりかた 今回は>>数字を返信用の文字列として扱い、<a></a>でページ内リンクを貼るケースを想定してますφ(..) 文字列全体をhメソッドを使…

RubyonRails:herokuのDBを開発環境(ローカル)へリストア(復元)する。

はじめに herokuで運営しているサービス(いつもの更新、いつでも確認 | Moook)の本番環境のデータを開発環境に反映させたときの手順をメモφ(..) 前提 環境 今回の手順を行った環境は下記の通りです。 title memo Production環境 heroku Rails ver 5.1.2 DB p…

Ruby on Rails:ファビコン(タイトルアイコン)の設定方法

はじめに Ruby on Railsで作成したWebアプリケーションにファビコンを設定する方法をメモφ(..) 設定方法 app/assets/imagesフォルダにファビコン用の画像を配置し、application.html.erb内に下記を記述します。 application.html.erb # favicon.pngは任意の…

Ruby on Rails:メール送信処理の準備・実装内容について(開発・本番環境)

はじめに Ruby on Railsでメール送信を行う際に必要となったツール及び実装を整理しましたφ(..) 目次 はじめに 目次 ActionMailerとは 用意するツール SendGrid 使い方 herokuへプラグインを導入 設定用にSendgridの情報を取得 SendGridの情報を環境変数へ設…

Ruby on Rails:生のSQLを作成(直書き)して実行させる方法

はじめに Railsのアプリを作ってて、複数TBLを結合した結果をGROUP BYで集計するような、ちょっと複雑な検索処理が必要となり生のSQLを実行したかったので、そのやり方をメモしましたφ(..) やりかた SELECT文の場合は、ActiveRecord::Base.connection.select…

Ruby on Rails:form_forでundefined method `to_key'が出続けてハマった話

あるモデルに紐づくモデルの登録を'form_for'を使って行おうとしたところ、下記エラーが出続けてハマったので対応策をメモφ(..) ActionView::Template::Error at / undefined method `to_key' for #<Favorite::ActiveRecord_AssociationRelation:0x007fcefaa056b0> Did you mean? to_set to_ary 原因 紐づくモデルの取得をm</favorite::activerecord_associationrelation:0x007fcefaa056b0>…