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

えんじにあ奮闘記

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

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

include ActiveModel::Modelとは【Rails】

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

ITP対応の歴史をまとめる

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

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

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

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

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コマンドいろいろ

最近、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回目くらいでやっと おおよそが理解できるレベルにな…

Rubyの繰り返し処理いろいろ

繰り返しといえばwhile文かたまにfor文という感じたったのだけど 調べたら他にも便利な繰り返し処理がいくつかあって、 用途によって使い分ける必要があるなぁと感じたので使ってみました。 今回使ったのはupto - 0.upto(10) do |i| (hamlで書いてます) iが…

JavaScript each文の書き方

基本構文 $('セレクタ').each(function(index, element){ 処理 }) eachで処理を回すとともにindex番号をつけることができるので、 例えばul要素の中にあるli要素に対し、 順番にindex番号のついた異なるidをつけていく、とかが実現できる。 以下参考 www.sej…

JavaScript if文の書き方

基本構文 if (条件式) { 処理 } else { 処理 } 条件式を追加したい場合は「else if」で記述する。 変数定義をif文で分岐 var input = (function(){ if(条件式) return 'aaa'; if(条件式) return 'bbb'; return 'ccc'; })(); else ifを省略して書くことができ…

jQueryでの変数の使い方

セレクタ内で変数を使う $('#label-box--${i}').css('width', '400px'); 普通はこう書くけど、 $(`#label-box--${i}`).css('width', '400px'); このように書くこともできる。 つまり、テンプレートリテラル${}を使いたい時は セレクタを文字列として「``」で…

Railsのエラーメッセージを好きなものに変更【バリデーション】

バリデーションとは validate・・・検証する ユーザーがフォームに値を入力してsubmitする時などに制限をかけること。 例)入力必須、◯文字以下など 基本的な書き方 対象モデルに書く。 validates :カラム名, 条件 空じゃないかどうかを検証 class Post < Ap…