記憶の外付けHDD

切実に頭にUSBのコネクターがほしいです。なるべくtype-cでお願いしたいです。(忘れないように、プログラミング学習で学んだことを投稿してます)

【Rails】NOT NULL制約を変更する

はじめに

また、よく調べることを見つけたので、記録します。

解説すること

addressカラムに設定しているnull: falseオプションを削除したい

方法

1.マイグレーションファイルを作成する

解説

bin/rails g migration ◯◯◯で作成する。
今回は、↓こんな感じで作成しました。

bin/rails g migration ChangeAddressFromSpotRemoveNullfalse

2.マイグレーションファイルを編集する

解説

作成したマイグレーションファイルを編集します。

class ChangeAddressFromSpotRemoveNullfalse < ActiveRecord::Migration[5.2]
  def change
    change_column_null :spots, :address, true
  end
end
  • change_column_nullメソッドを使用します。
  • NOT NULL制約を外すので、第3引数はtrueです。
    (1回、間違えて、falseにしちゃってました...)

参考(Railsガイド)

3.マイグレーションファイルを適用する

rails g db:migrateで適用します。

以上!

【Rails】カラムを後から追加する

はじめに

もう、4回くらい調べているので、二度と調べないために、ここに記載します。

解説すること

すでに作成したテーブルに、新しくカラムを追加する方法。

方法

0.想定ケース

google maps platformを使って、地図情報も登録したい 。
なので、postsテーブルに以下のカラムを追加します。

カラム名 意味
latitude float 緯度
longitude float 経度

1.マイグレーションファイルを生成

ターミナルで以下のコマンドを入力

bin/rails g migration AddPlaceinfoToPosts latitude:float longitude:float
  • ToPostsの部分で、追加先のテーブルを指定
  • latitude:float longitude:floatの部分で、追加するカラム名&型を指定

2.マイグレーションファイルを編集&適用

1.で作成したマイグレーションファイルは、以下のようになっているはず。

class AddPlaceinfoToPosts < ActiveRecord::Migration[5.2]
  def change
    add_column :posts, :latitude, :float
    add_column :posts, :longitude, :float
  end
end

そんで、bin/rails db:migrateで、マイグレーションファイルを適用します。

これで完了です。

その他

オプションを付ける

null: falseをつけたいときは、こんな感じで書きます。

  add_column :posts, :latitude, :float, null: false

そのほかのオプションは↓を見てください。
add_column (ActiveRecord::ConnectionAdapters::SchemaStatements) - APIdock

参考にした記事

Rails Guide - 2.1 単独のマイグレーションを作成する

【Ruby】(解説)競プロで使う「標準入力」

はじめに

3日に1回くらい、Atcoderの問題を解こうかな〜と思いつきました。
まず最初に、この問題(A - Product)やってみたら、そもそも「標準出力わかんねぇ」と気付きました。

どうやら、a, b = gets.split.map(&:to_i)というコードを使うといい感じらしいので、以下でその内容を解説してみようと思います。

参考にさせていただきました。
【Rubyで競プロ】よく使う、標準入力を扱う方法あれこれ

解説

コード

a,b = gets.split.map(&:to_i)

解説

0.前提

この標準出力は、スペース区切りの数列を標準出力する場合に使用する。

↓スペース区切りの数列はこんな感じ


3 4


1.大まかな構造

多重代入というものを使用して、変数aと変数bに配列から値を代入してます。

ドキュメント

2.gets

getsメソッドは、入力されたものを文字列で返します。
注意点は

  • 文字列で返す→数字は数値型に変更する必要がある(to_i)
  • 最後に改行が入る→場合によっては、chompをする

ドキュメント

3.split

splitメソッドは、引数で渡した区切り文字で、文字列を配列に分割するメソッドです。

引数を指定しない場合は、空白で分割される。

ドキュメント

4.map(&:to_i)

mapメソッドを使って、3.splitで作成した配列の中身(文字列)を数値に変換し、新たな配列を作成します。

ドキュメント

【map】

【ぼっち演算子

さいごに

これからは2、3日に1回くらい競プロの問題を解こうかなって思ってます。

以上

【Rails】カラム名を変更する

何回も調べている気がすることを、また、見つけたので、記録します。

使用技術

Rails

目標

すでに作成したカラム名を変更する

方法

想定

usersテーブルのnameカラム名nicknameに変更

1.マイグレーションファイルを作成

テーブルを操作するためのマイグレーションファイルを生成します。

bin/rails generate migration rename_nickname_column_to_name

rename_nickname〜の部分は、作成するマイグレーションファイル名になります。

2.マイグレーションファイルを編集

1で作成したマイグレーションファイルに、以下の記載を書く

def change
  rename_column :users, :name, :nickname
end

rename_column :テーブル名, :今のカラム名, :修正後のカラム名

3.マイグレーションファイルを適用する

以上

参考(Railsガイド)

【scss】変数の設定(色)

はじめに

齢30にして、生涯通算4回以上調べているので、ここに記録することとしました。

記録すること

  • scssである色を変数に指定する
  • その変数を使う

解説しないこと

  • scssとは?
  • sassとscssの違いって?

想定ケース

サイトのメインカラーある色を変数に指定する。

なお、今、デンタル系のアプリを作成しているので、こんな色をメインで使おうかなって思ってます。

キシリトールっぽい緑 はこんなイメージ。

実践

1.変数の指定

$main-green: #038935;

ポイント

先頭に$をつけます。

2.使用する

タイトル文字(titleクラスを指定)にmain-greenを使用したいと思います。

.title {
  color: $main-green;
}

これでOK

できあがり

口からミントの味がしてきましたね。

参考

sass - variables

【Rails】マイグレーションファイルで外部キーを作成

はじめに

ひざびさにマイグレーションファイルをいじっていたら、書き方を忘れたので、記録します。

設定

  • テーブルは以下の2つある想定

    • usersテーブル
    • itemsテーブル
  • アソシエーション

    • user has_many items
    • items belongs_to user

やりたいこと

このケースで、itemsテーブルにuser_idカラム(外部キー)を作成したい

マイグレーションファイルの書き方

itemsテーブル作成時

class CreateItems < ActiveRecord::Migration[5.2]
  def change
    create_table :items do |t|
    #↓この行が重要! 
      t.references :user, null: false, foreign_key: true
    end
  end
end

参考

RailsGide 6.1 モデルを生成する

【vim】複数行をインテンドする

前提

MacOSを使用しております。

大まかな流れ

  1. 範囲の先頭行へ移動

  2. shift + v でビジュアルモードに

  3. jk(数字)Gで範囲を選択

  4. ><でインテンドを操作

  5. 、もう1インテンドしたいときは、.を押す

説明

ビジュアルモードって何?

起動コマンド 結果
v カーソル上の文字から範囲指定開始
V カーソル上のから範囲指定開始
control + v ブロックで指定できる
(説明割愛)

インテンド操作

  • コマンド
起動コマンド 結果
< 左インテンド
> 右インテンド

参考

「単発繰り返し」の.

  • 最後の変更を繰り返すコマンド

single-repeat - Vim日本語ドキュメント