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

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

RailsでSendGridのAPIを使用する(3)〜実装〜

※この記事は何回かに分けてRailsでセンドグリッドAPIを使用する方法をまとめたものです。 アカウント発行〜有料プラン契約までの導入編はこちら RailsでSendGridのAPIを使用する(1)〜導入〜 - 箱のプログラミング日記。 APIキーの発行やDNSへのレコード登…

RailsでSendGridのAPIを使用する(2)〜準備〜

※この記事は何回かに分けてRailsでセンドグリッドAPIを使用する方法をまとめたものです。 前回はアカウント発行と有料プランへの登録までやったので、今回は実際にセンドグリッドの管理画面から各種設定をするところに入っていきたい。 ちなみに前回の記事は…

RailsでSendGridのAPIを使用する(1)〜導入〜

アカウント発行周りから実装まで網羅的に書かれている記事があまりなかったので、SendGridAPIについてまとめていきます。 やることが多くて多岐にわたるので、何回かに分けて書くことになりそう。 SendGridとは SendGridは全世界で利用されているメール配信…

RailsでChatworkAPIを使用する

RailsアプリケーションでChatworkAPIを使用してチャットを投げる方法について。 Chatworkとは ここから説明する必要もないする気がするのだけど go.chatwork.com チャットツール。 Slackよりもエンジニア色が少し弱い印象。 アプリケーションの中で例外が発…

Railsでhttps通信を使ってjsonでPOSTする

Railsのアプリケーションでhttpsリクエストを走らせ、jsonでPOSTしたい時の記事があまり無かったので書いておく。 完成形を先に class Sample require 'net/https' require 'uri' require 'json' def post_message uri = URI.parse("https://www.y-hakopro.c…

文字列の一部を削除したい【delete / gsub】

Railsで開発していて渡ってきた文字列を操作したいなーと思った箇所があったのでメモ。 deleteメソッド delete(*strs) -> String self から strs に含まれる文字を取り除いた文字列を生成して返します。 引用:String#delete (Ruby 2.7.0 リファレンスマニュ…

本番と同じエラー画面を出したい【Rails】

Railsでの開発中に本番同様のエラー画面が表示される様に設定を変更する方法について。 設定方法 config/environments/development.rb # Show full error reports. config.consider_all_requests_local = true これを # Show full error reports. config.con…

Cannot delete or update a parent row: a foreign key constraint fails【MySQLエラー】

MySQLのエラーでちょっとハマったのでメモ。 models/user.rb class User < ApplicationRecord has_many :articles, dependent: :destroy end models/article.rb class Article < ApplicationRecord belongs_to :user end migration(article) create_table "a…

dependent: :destroyとdependent: :delete_allの違い【Rails】

関連モデルを一緒に削除してくれるdependent: :destroyとdependent: :delete_allについて、違いがよく分かってなかったのでまとめました。 モデルを用意 models/user.rb class User < ApplicationRecord has_many :articles end models/article.rb class Art…

【 f.check_box】チェックボックスをデフォルトでチェックさせたい

Railsのビューヘルパーって引数の順番とか個数とかいつも忘れやすくてよくつまづく。 今回はチェックボックスにHTML属性のcheckedをつけておき、最初からチェックされている状態を再現します。 checked属性とは checked属性を指定すると、あらかじめその選択…

Railsのserialize/storeを試してみた

カラムの値をハッシュ形式で保存する方法があるらしい、というのは以前聞いた事があったのですが、この度色々調べていたところserializeやstoreを使えば実現できるという事が分かったので、ちょっと使ってみました。 ※Railsのserializeやstoreをプロダクトに…

Railsのbooleanの扱いをちょっと追ってみた【Rails】

Railsで真偽値(boolean型)を使うに当たって、パラメーターやDB間でどのように受け渡しされるのかというのをちょっと追ってみた。 migration classCreateUsers < ActiveRecord::Migration[5.1] def change create_table :users do |t| t.string :name, null…

html_safeとsanitizeの違い

DBに保存した文字列の改行を反映させたいと思ってググったら、今まで見たことのあるhtml_safeの他にsanitizeというものが出てきて違いが気になったので比べてみた。 エスケープとは まず、そもそも日頃よく目にする「エスケープ処理」について改めておさらい…

Railsのloggerを使ってみた

特に必要だったわけじゃなんだけど、本を読んでて気になったloggerを少し触ってみたのでメモ。 loggerとは rails sでサーバーを起動すると、ローカルでリクエストが走った時やSQLが走った時などターミナルにダダダっとログが出力されるけど、あれもRailsのlo…

【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とのデータのやりとりを簡潔にまとめるときに便利な方のスコープさんです。 ス…

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

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

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タ…

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

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

include ActiveModel::Modelとは【Rails】

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

ぼっち演算子とpresence【Rails】

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

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

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

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

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

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

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

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

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