Madogiwa Blog

主に技術系の学習メモに使っていきます。

開発

関連モデルの関連モデルの読み込み処理を行うN+1問題を解決する。

関連モデルの関連モデルを参照する場合のN+1問題の解消方法で少しハマったのでφ(..)メモメモ 問題 例えば、下記のようなClassがあった場合にtask.user.groupを取得しようとするとGroupの読み込み処理によりN+1問題が発生する。 そのためTaskを取得する際には…

RubyonRails:accepts_nested_attributes_forとfields_forを使って紐づくモデルのフォームを作成する

railsの機能のaccepts_nested_attributes_forとfields_forを使うと紐づくモデルも合わせて簡単に作成できたのでメモφ(..)メモメモ 今回の想定ケース 今回はクイズのように質問があって、それに紐づく選択肢があるようなケースを想定してます。 実装イメージ…

Ruby:ShrineでUploader個別にアップロード先を設定するメモ

最近、ファイルアップロード用のgemであるShrineを使用する機会があったんですが、Uploader別にアップロード先を設定する方法が全然見つからず、だいぶハマってしまったので、やり方をφ(..)メモメモ github.com とりあえず公式のQuick startを見てみる アッ…

GithubMarketplaceで自動テスト、コード解析環境が簡単に出来て最高かよってなった話

GithubMarketPlaceからCircleciを導入してみたら、初めてだったたけど意外と簡単に、しかも無料で自動テスト・コード解析環境が作れて「最高かよ」という気持ちになった ちなみに構築した環境は下記のような感じで、普通のrailsアプリケーションです key val…

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

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

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

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

Webエンジニア転職1ヶ月目まとめ、 コーディング量とか数字で整理してみた

みなさん、こんにちは!(・∀・) 4月からSIerからWeb系の企業に転職して、あっという間に1ヶ月が経ちました。 この1ヶ月間につくったPRのSTEP数と作成するまでに掛かった工数を整理してみましたφ(..) Web系企業に転職すると、1ヶ月でどれくらいコードを書くの…

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…

Ruby:継承を使って良い感じにコードを共通するメモ

オブジェクト志向設計実践ガイドを読んで継承を使ったソースコードの共有化手法を学んだので内容を整理してみましたφ(..) オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者: Sandi Metz,?山泰基出版社/メー…

Ruby:ダックタイピングを使って抽象度の高い処理を実装するメモ

オブジェクト志向設計実践ガイドを読んでダックタイピングを使って抽象度を上げる方法を学んだので、整理してみるφ(..) オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者: Sandi Metz,?山泰基出版社/メーカ…

Dockerのトレンド状況と学ぶメリットとハードルについて

先日、下記の勉強会に参加してDockerの基礎的な部分は知ることでき、せっかくなのでちゃんとDockerを勉強しようと思い、ただけんさん(ただけん@electron職人になりたい (@tadaken3) | Twitter)に紹介頂いた下記書籍を購入して勉強しましたφ(..) プログラマの…

Ruby:ppモジュールで実行結果を良い感じに確認する

はじめに Rubyでデバック実行する時に、よくpメソッドを使うと思いますが、Rubyには標準でppモジュールというものがあります。 ppモジュールを使うとpよりも良い感じで実行結果を確認出来ます! 使い方 導入はとても簡単で、ソースコードにrequire 'pp'と記…

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側で処理するケースを想定してます。 さらに具体的にいう…

Git:cherry-pickを使って特定のコミットだけをブランチに反映する

ブランチを切り忘れて、複数の対応が含まれてしまったブランチから特定の対応を含んだブランチを作成してプルリクを作りたくてcherry-pickについて調べてのでメモφ(..) やりかた 前提 特定のコミットをreviewブランチに反映してみる masterにプルリクを出し…

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

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

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

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

アイデア:本を読んだので個人開発しているサービス「Moook」をもう一度考えてみる。

最近、サービス考案の書籍を読んだので、 その学びの振り返りも兼ねて自分の開発中のサービス 「いつもの更新、いつでも確認 | Moook」を再検討してみるφ(..) moook.herokuapp.com ↓ちなみに読んだ本はこれ・ω・ ITエンジニアとして生き残るための創造的発想…

Ruby:プログラム内で出てくる記号の意味(<、::、&、@、$、**、<<-)

Rubyで書かれたプログラムを見た時に、記号の意味が良くわからないなぁと思うことがあったので、整理してみました(._.)! 記号一覧 <:継承 :::定数の参照、クラス内クラスの参照 &:&演算子、ぼっち演算子 @:インスタンス変数、クラス変数 $:グローバル…

Ruby:はてなブログAPIを使って記事の一覧をJSON形式で取得する

最近、技術系の記事はQiitaへの移行を考えているのですが、過去の記事の移行がめんどくさいなぁ。。。と思っていたので、記事の一覧をはてなブログAPIで取得するスクリプトを作ってみたので、その手順をメモしておきますφ(..) ちなみに成果物は下記に公開し…

JavaScript:Anglar勉強整理メモ - サンプルアプリの実行と概要について -

最近、Angularの勉強を下記本で勉強しているので、頭の整理がてらメモを投稿してみる。 Angularアプリケーションプログラミング作者: 山田祥寛出版社/メーカー: 技術評論社発売日: 2017/08/04メディア: 大型本この商品を含むブログを見る 今回は、Angularの…

HTML+CSS+JavaScriptでネイティブアプリが作れる - ionic入門 -

最近、ionicを使ってみているので日本語のドキュメント少ないし、頭の整理も兼ねて入門記事を書いてみるφ(..) ionicとは ionicとは、HTML+CSS+JavascriptといったWebの技術を使ってネイティブアプリが開発出来るオープンソースのフレームワークです。 Know h…