2019-12-01から1ヶ月間の記事一覧

3ヶ月の振り返り

今の職場に来て3ヶ月がたちました。 なので個人的な振り返りKPTをしようと思います! K 楽しい 居心地よい とても手厚いサポート&フォローもらえる環境 最低限のSQL読み書き出来るようになった API開発ちょっとずつ慣れてきた エラーハンドリング考えられる…

updated_atだけ更新

find_or_create_byを使う際、すでにレコードがあるときはupdated_atだけ更新して欲しいと思う状況がありました。 User.find_or_create_by(name: “Hayashi”) これだと既にHayashiさんが存在する場合、updated_atは更新されません。 なので以下のようにfind_or…

文字列を配列に入ったハッシュに変換

文字列を配列に入ったハッシュにしたい状況がありました。 具体的には以下のような変換をしたいと思っておりました。 "[{{day: '2019/12/22', value: '5000'},{{day: '2019/12/22', value: '5000'}]" => [{:day=>"2019/12/22", :value=>"5000"}, {:day=>"201…

TokyoGirls.rb Meetup vol.2へ参加した

本日TokyoGirls.rb Meetup vol.2へ参加しました!去年の第一回目に参加して楽しかったし、各セッション面白そうなものばかりだったので以前から気になっておりました!とってもよかったので記憶が薄れないうちに各セッションを聞いて感じたことや気づいたこ…

日本語のtypoチェックツール

日本語のtypoチェックツールを探しておりました。 一番最初に以下のツールを見つけたので試してみました!! enno.jp どうやらこちらはRubyで作られているようです! 試してみる 試してみたのですが、日本語はなかなか難しいようで以下の例はtypoを検出して…

RipperとRubyParser

今日とあるプルリク上でrubyで書かれたコードをパースする話が出てきました。 気になったので調べてみました。 Rubyで書かれたコードをパースする方法はいくつかあるようです。 RubyParserを使う gem install ruby_parser を実行してruby_parserをローカルに…

ナンバーパラメータ

昨日ruby2.7から入る新機能の1つとして紹介があったナンバーパラメータについて、試せていなかったので試しました! ナンバーパラメータとは ブロックの仮引数を宣言しなくても_1、_2、_3、、、というように`_引数の番号`で参照できる機能です。 最初は`@引…

Ruby Hack Challenge Holiday #9 Ruby 2.7 + 年末LT大会へ参加した

本日はRuby Hack Challenge Hpliday #9 Ruby 2.7 + 年末LT大会へ参加しました!以下がイベントリンクです。https://rhc.connpass.com/event/155899/ まずruby2.7の新機能について紹介していただき、その後各自作業を進めました。やっと自分もruby 2.7.0から…

rails5系以降はtimestampがデフォルトてNOT NULLだった

タイトル通りなのですが、rails5系以降はtimestampがデフォルトてNOT NULLだということを今日知りました。 4系まではnull: falseをつけないとNOT NULL制約を付けることができなかったようですが挙動が変わっていたようです。 こちらの記事に詳しく書かれて…

CloudFrontのキャッシュ削除

今までCloudFrontのキャッシュ削除をしてくれるコマンドに頼っておりましたが、なぜか変更が反映されない現象が起きました。 そこでAWSのマネジメント画面から削除したのでその手順についてかいておきます! やり方 1. AWSコンソールからCloudFrontのサービ…

業務エラーとシステムエラー

エラーハンドリングするにあたって、まずは業務エラーとシステムエラーを分けて考える必要がありました。 両者の違いについてメモしておこうと思います! 業務エラー バリデーションに引っかかるような、正しい値に直せば対応できるエラー。 システムエラー …

DBで設定できる制約

DBで設定できる制約について調べてみました〜 unique制約 同じ値は登録できない制約です。 not null制約 nullを登録できない制約です。 primary key制約 主キーを設定する制約です。 null、同じ値が保存できなくなります。 railsだとidにデフォルトでprimary…

t.referencesとforeign_key: true

テーブルを作成する際、外部キー周りの設定でt.referencesとforeign_key: trueが何をしてくれるのか・してくれないのか曖昧だったので調べました。 t.references 参照モデル名_idというカラム名で参照モデルのidと紐付けてくれる これだけだと参照にないidで…

where.not

アクティブレコードのwhere.notを使った実装を考えていたのですが、 where.notが変換されるSQL(WHERE ~ NOT IN)にはINの引数にNILLである値が含まれていると何も取得できないという注意点があるようなので、where.notでもそうなの?!と思い試してみました。…

外部キー制約

外部キー制について考える機会があったのでメモしておきます〜 外部キー制約とは 外部キーは関連づけているテーブル間のデータの整合性を保つために存在する制約です。 外部キー制約を設定しておくと、存在しないidで外部キーを保存する事ができなくなります…

横スワイプで画面が戻らないようにする

ブラウザで横スワイプで画面が戻ってしまうのが不便だと感じておりました。 ただ横にスクロールして見えてない部分を確認しているだけなのに、横にスワイプとみなされて戻ってしまう事が結構ストレスでした。 (特にGitHubのコメント欄でコードが横長になって…

&、-、select、reject

今日使ったArrayクラスのメソッドについてメモしておきます。 何回も使ったことあるのにいつも記憶が曖昧で調べている気がしますw & 複数の配列を比較して重複してる値を返してくれます。 [1,2,3,4,5,] & [2,3,4,7] => [2,3,4] - 2つの配列を比較し、前者の…

文字集合と符号化方式

文字コードの構成要素には、文字集合、符号化方式の2つがある事を昨日知りました。なので今日は文字集合、符号化方式について調べました。 文字集合とは 表現できる文字の集合です。 符号化方式とは 文字をコンピュータ上でどういった数値で表現するかを定…

文字コード

今日は文字コードについて少し調べました〜 文字コードとは 文字に数値を当てはめたものです。 文字コードの種類 ASCII アルファベット、数字、その他記号を表現できる。7ビットで1文字を表現できる。 Shift_JIS 1文字2バイトで表現されます。 ASCIIで表現で…

アクティブレコードでのトランザクション

昨日はSQLでのトランザクションについて書いたので、 今日はアクティブレコードでのトランザクションについて調べてみました! 書き方 以下のように書くことができます。 ① モデル.transaction do ② DBに変更を加える(updateやdeleteなど)③ end④ 上手くいっ…