ひーろのアウトプットブログ

プログラミングの学習記録と開発日記です

範囲オブジェクト

範囲を表す時は..または...を使用する。 対象とする範囲が異なるため使い分ける。 n以上m以下 n以上m以下を指定する場合は..を使用する。 irb(main):001:0> numbers = 1..5 => 1..5 irb(main):002:0> numbers.include?(1) => true irb(main):003:0> numbers.…

ブロックの色々な書き方

mapメソッドを使い、ブロックの書き方を何種類か記録。 do~end ['a', 'b', 'c'].map do |s| s.upcase end => ["A", "B", "C"] { } ['a', 'b', 'c'].map { |s| s.upcase } => ["A", "B", "C"] (&: ~ ) ['a', 'b', 'c'].map(&:upcase) => ["A", "B", "C"]

配列の削除について

A = [1, 2, 3, 4, 1, 2]という配列があった時に、deleteとdelete_atを使用した場合の挙動の違いは下記のようになる。 delete irb(main):001:0> A = [1, 2, 3, 4, 1, 2] => [1, 2, 3, 4, 1, 2] irb(main):002:0> A.delete(2) => 2 irb(main):003:0> A => [1, …

where句で「_」を検索する方法

ユーザーの検索でSQL文を使い、_(アンダースコア)から始まるユーザーネームを検索しようとした際に、少し困ったので書いておきます。 なんで困ったの? まずスコープを作って検索の共通化をしました。 class User < ApplicationRecord scope :search_user, -…

blongs_toの外部キーがnilでもDBへ保存できるようになるオプション

著者(author)と書籍(book)の1対多の関係があった場合、モデルは次のようになります。 class Author < ApplicationRecord has_many :books end class Book < ApplicationRecord belongs_to :author end Bookは次のカラムを持っています。 name:string author_…

impressionistを使ってPV数を計測する

制作中のアプリにPV数をカウントする機能が欲しかったので調べてみたところ、impressionistというgemが良さそうだったので導入してみました。 前提 ruby: 2.6.6 rails: 6.0.6.5 導入 いつものようにGemfileへgemを記述しinstallします。 gem 'impressionist'…

high_voltageを使用して簡単に静的ページを作成する

静的なページを作成する時にそれぞれcontrollerを作るか検討していたら、high_voltageというgemを見つけました。 controllerやroutesを設定しなくともapp/view/pages以下のファイルを表示できるようになるというものです。 前提 ruby: 2.6.6 rails: 6.0.3.5 …

Rspecで確認メッセージを選択する記述方法

システムスペックを書いている時に確認ダイアログを選択する方法を知らなかったので調べてみました。 前提 ruby: 2.6.6 rails: 6.0.3.5 内容 とりあえず分からないなりに書いてみると、案の定エラーがでました。 Selenium::WebDriver::Error::UnexpectedAler…

ActionMailerでGmail宛にメールを送る際に発生したNet::SMTPAuthenticationErrorの解消

お問い合わせフォーム機能の作成でActionMailerを使用した。名前欄やメール欄を設けず、メッセージだけ記入して送信するシンプルな仕様で設計。 Railsガイドに沿って実装していったが、メッセージ送信時にNet::SMTPAuthenticationErrorというエラーが発生し…

MySQLとバリデーションにおけるユニーク制約の違い

railsでアプリを作成していたところ、MySQLとvalidatesのユニーク制約で想定していなかった挙動をしました。 前提 ruby: 2.6.6 rails: 6.0.3.5 内容 userテーブルを作成し、ユニーク制約をかけました。 $ rails g model User name:string class CreateUser <…