箱のプログラミング日記。

渋谷の自社開発企業でRails書いてます。

referencesのカラムを後から追加・削除【Rails】

references型のカラムを後から追加したり削除したりしたい時にちょっとつまづいた話。 まずモデルの説明から 今回はuserモデルとgroupモデルがあり、中間テーブルはgroup_user。 あるグループを作成する時に複数userを選択しますが、 groupsテーブルにはグル…

中間テーブルへの保存ができないのはseedが原因かも【Rails】

中間テーブルへの保存ができなくて、一生懸命コードのいろんなところを探して調べたりしたけど、結局DBが原因でしたよという話。 まずモデルの説明から 今回はuserモデルとgroupモデルがあり、中間テーブルはgroup_user。 あるグループを作成する時に複数use…

data-confirmに苦労した話【Rails】

業務で削除前に「本当に削除してよろしいですか?」的な確認ダイアログを作りたくて、 意気揚々とdata-confirmを使ったのは良いものの、まさかのところでハマってしまった記録。 そもそもdata-confirmとは HTML5から使えるようになったもので、railsではaタ…

ソケット通信とは

仕事でソケット通信の知見が必要だったので、少し勉強しました。 まだふわっとしか理解できていませんが、一度整理しておきたいと思います。 ソケット通信とは インターネットはTCP/IPと呼ぶ通信プロトコルを利用しますが、そのTCP/IPをプログラムから利用す…

コミットのやり直し

Git

gitのCUI操作にもだいぶ慣れてきました。 今回は、基本的なpush,pull,mergeは理解している方がさらに使えると便利な コミットの修正についてまとめていこうと思います。 コミットを修正したい時・・・amend コミットメッセージを変えたい 私もよくあるんです…

Proc.newでバリデーションに複数条件を指定【Rails】

バリデーションに複数条件を指定したい タイトルの通り。 Railsではデータの入力漏れをユーザー側に知らせる手段としてバリデーションが用いられますが、条件によって処理を分けたい場合も当然出て来ますよね。 例えば私がスクールでやったメ◯カリで言うと、…

include ActiveModel::Modelとは【Rails】

仕事で開発をしていたところ、 「include ActiveModel::Model」というコードが出現しました。 これまで個人開発やスクールでの学習では 「モジュール」をあまりやってこなかったので こういう見たことがないものには、苦手意識・・・。 ということで、調べて…

ITP対応の歴史をまとめる

少し前になりますが ITP2.3が発表されましたね。 blogs.itmedia.co.jp 今回のアップデートの大きなところは、「トラッカー判定」されたドメインからのフラグ付き(URLパラメタ)のアクセスについては、ローカルストレージに保管したデータも制限(1週間で削…

いつやるの?Git入門【抜粋】

Git

とんでもなく良い教材を見つけてしまいました。 今の私 GitHubDesktopで一通りGitに慣れる→CUIでの操作に慣れる→ でも実際深いところでの理解はできていない といった状況。 一般的なコミット、プッシュ、プルリク出してマージしてプル・・・ とかは問題なく…

リモートブランチとローカルブランチで差分が出ちゃった

Git

gitでちょっとバタバタした話。 複数ブランチを行き来しながら stashしたりstash popしたりを繰り返していたら、 なんかよくわからないけどコンフリクトが起きてしまいました。 複数人での開発で履歴を汚くしたくなかったので、 mergeはできるだけしたくない…

ぼっち演算子とpresence【Rails】

業務に入ってから、「エラーハンドリング」の重要性をひしひしと感じています。 やっぱりイチ企業のサービスとなると、エラーが起こっては困るので コードの至る所に対処が散りばめられているんですね。。 ポートフォリオなんかでなんとなくやっていたのとは…

シンボリックリンクとは

先日、環境構築で「シンボリックリンクを作成する」みたいな項目があり、 気になって調べたもののいまいちよくわからず。。 たまたまドットインストールで UNIXコマンドについて勉強していたところ、 シンボリックリンクが登場したのでまとめてみた。 シンボ…

mysqlが起動しない

開発途中でmysqlのバージョンを下げる必要が出てしまったので、 現在インストール済みの最新バージョンを一度アンインストール→ 下げたバージョンを再度インストール、ということを行ったのだが その後起動しなくなってしまい、だいぶ詰まりました。 やった…

SSH鍵について勉強してみた

先週のことですが、会社で環境構築を行いました その際に登場した「SSH鍵」 今までも何度か生成して、githubに登録みたいなことをしてきましたが 毎回何をしているのかわかっていないまま なんとなくコマンドを叩いてきてしまっていたので、 SSH鍵がなんのた…

Homebrewってなんなんだ

最近、無事入社しました。 環境構築をしているところなんですが だいぶつまづいたついでに、今までよく分かっていなかった Homebrewって何してるの?みたいなことがだいぶ理解できたので、書いておきます Homebrewとは macOS専用のパッケージ管理マネージャ…

パーセント記法についてまとめる【Ruby】

Railsチュートリアルをやっていたところ、 こんなソースに遭遇しました。 >> a = %w[foo bar baz quux] # %wを使って文字列の配列に変換 ん??この%wって何だ。。 調べたところ、パーセント記法だった。 ドットインストールで学習済みにも関わらず、ピンと…

基本的なgitコマンドいろいろ

Git

最近、Railsチュートリアルをやり始めました。 gitをCUIで操作することが格段に増えたので、 よく使うコマンドについて整理しておきたいと思います。 $ git init カレントディレクトリを作成するアプリケーションにしておく。 「これからはこのアプリケーシ…

配列に対する繰り返し処理【map】【collect】

Rubyで配列に対して繰り返しの処理を行う時は、まずeachを使っていたのですが mapやcollectについてもきちんと勉強し、使いこなせるようにしようと思い 色々試してみました。 mapメソッドとは array.map { |item| block } mapメソッドは、要素の数だけ繰り返…

出来るだけCUIでアプリを作ろう

来月から都内でエンジニアとして働くことになりました。 これまでポートフォリオだったり、スクールのカリキュラム内でアプリをつくる時は 「自分が知っていて慣れているやり方」に偏ってしまうことが多かったのですが、 今後エンジニアになる以上、 「もっ…

each_with_indexをうまく使う【rubyアルゴリズム】

本日もrubyのアルゴリズム問題から、勉強になった部分を抜粋。 問題 以下の配列から、数を探して何番目に含まれているか結果を返すメソッドを作成してください input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93] 自分の解答 def searc…

【rubyアルゴリズム】整数を分解したい

アルゴリズム問題を解いているとたまにある、 「二桁の整数を10の位と1の位に分解して、それらをどうこう」 みたいなやつ。 「分解」と聞いて真っ先に思い浮かぶのが 私の場合はsplitなんだけど(安易?) splitってstringに使うものだから整数にto_sするの…

elsifを使わずにfizbuzzを実現【Ruby】

有名すぎるアルゴリズムのうちの一つ、fizbuzz問題の応用編を解きました。 一般的なfizbuzz問題 1から100まで数を数える時に、3の倍数なら「fizz」、5の倍数なら「buzz」、ただし15の倍数なら「fizzbuzz」、それ以外はその数を答えなさい。 普通に解くなら、…

create前に確認画面を作りたい【Rails】

Railsで商品予約システムを開発しています。 巷のアプリとかでもよくある「この内容でよろしいですか?」みたいな確認画面を newとcreateの間に挟みたいな・・・と思いつきました。 主なモデルは以下 ユーザー:user 商品:product 注文:order 先に、参考に…

railsをherokuでデプロイ【アセットパイプラインが通らない】

今日、ポートフォリオをデプロイしました。 作成中ではあるもののアジャイル型で・・・ということで。 デプロイに関してはほぼ未経験。 スクールのチーム開発では、デプロイ担当さんが大変そうにやってるのを ふーん・・・って聞いているのが精一杯でした ※…

fields_forを使った子モデルへの複数レコード保存【cocoonが便利】

Railsで商品予約システムを開発中です。 あるオブジェクトをcreateする際に、一部の情報だけ別モデル(子モデル)へ保存したい時って頻繁にあると思いますが そこに非同期(JavaScript)によるフォームの出現を組み合わせた、最高に便利なgemに出会いました…

「ログアウトしてよろしいですか?」のアラートを出したい【Rails】

Railsでdeviseを使ってアプリを作成しています。 ユーザーがログインやログアウトした際に「ログインしました」「ログアウトしました」というフラッシュメッセージを出すのは比較的簡単ですが、 例えばログアウトボタンを押したら「ログアウトしてよろしいで…

railsで管理者権限を付与したい【rails_admin】

Railsで商品予約サイトを作成しています。 ユーザー機能はdeviseで実装し、権限によってできる処理を分けたかったので adminを使用しました。 主に使用するモデルとしては product(商品) user(顧客) order(注文) といった感じです。 今回、通常ユーザ…

date_selectの使い方【Rails】

form_forやform_withの中で使えるヘルパーメソッドで よく見る日付や時刻をプルダウンで選択できるフォームを簡単に作ることができる、 date_selectを使用してみました。 こんな感じ。 コードは以下(form_forは省略) = f.date_select :date, {include_blan…

フラッシュメッセージの作り方【Rails】

フラッシュメッセージとは 「登録が完了しました」「削除が完了しました」というように 正常な動作ができていることをユーザーに知らせるためのメッセージのこと。 Railsではリダイレクトとともに使われることが多いように思います フラッシュメッセージの表…

Ajaxとjsonを使用した非同期通信の実装

ブログ少しご無沙汰していました 本日はAjaxについて。 Ajaxについては1ヶ月少し前に初めて学んだ時はほとんど理解ができていませんでしたが 最近になってjQueryの基礎力がだいぶついた状態&使うのが3回目くらいでやっと おおよそが理解できるレベルにな…