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

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

【Rails】findとfind_byの違い / find_byとwhereの違い

Railsでアプリケーションの開発をするようになってもう数ヶ月経ちますが、findやらfind_byやら(whereやら)の明確な違いをよく分からないまま使ってしまっていたので、色々触ってまとめてみました。 findメソッド findメソッドを使用すると、与えられたどの…

new_record?とかchanged?とかRailsの便利なメソッドまとめ

データベースとのやりとりで非常に便利なメソッドをいくつか使用する機会がありとてもRailsらしくて感動したので、いくつかまとめておきます。 新しいオブジェクトかどうか【new_record?】 その名の通り、オブジェクトが新しいレコードかどうかを検証してく…

Ralisで入力確認用フォームを作りたい【_confirmation】

サービスを作っていると「パスワードやメールアドレスの確認用入力フォームを作りたいな〜」みたいな時ありますよね。 イメージこんな感じ。 (パスワードだったらユーザー認証のライブラリがだいたいやってくれてるような気もしますが。。) Rails標準のヘ…

Railsのスコープの書き方【SQL】

スコープって何?状態だったところから、使ってみると非常に便利だったのでスコープについて書いておきます。 ちなみにここで言うスコープはメソッドのスコープとかではなく、SQLとのデータのやりとりを簡潔にまとめるときに便利な方のスコープさんです。 ス…

複数バージョンのインストール【Ruby】

個人開発でRubyを使うときに、仕事で使っているバージョンより新しいものを使いたいな、と思って別バージョンのインストール方法を調べてやってみたので、まとめておきます。 rbenvのインストール Rubyのバージョン管理にはrbenvが必要になるのでインストー…

Updates were rejected because the tip of your current branch is...が出たとき

Git

gitを使ってるとたまにこんな場面に遭遇する。 Updates were rejected because the tip of your current branch is behind its remote counterpart. Integrate the remote changes (e.g. 'git pull ...') before pushing again. すでにリモートにプッシュ済…

assign_attributesなのに保存されてしまう

Railsでのアプリケーション開発で「DBに保存したくないけど値を更新したい」時ってあると思いますが、そんな時に便利なassign_attributesで少し詰まったのでメモ。 update_attributesとassign_attributesの違い update_attributesとassign_attributesの違い…

テーブルの長文を折り返し表示したい【Bootstrap】

テーブルの中身を折り返し表示したい場面って結構遭遇すると思いますが、 その中でも今回はBootstrapで作られたテーブルについてのお話。 問題:折り返し表示が適用されない Bootstrapでは簡単にテーブルを作ることができて便利なのですが、中身が長くなると…

uniqueness: trueでnillを許可したい【Rails】

DBに保存する前に一意かどうかを検証したい場合、バリデーションで uniqueness: true を使うと思いますが、presence: trueを併用しない場合(値がなくても良い場合)に少しつまづきました。 今回の問題 validates :hoge_code, uniqueness: true このままだと…

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するの…