【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
参考にした記事
【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】
【ぼっち演算子】
- Rubyで使われる記号の意味(正規表現の複雑な記号は除く) (Ruby 2.7.0 リファレンスマニュアル)
- メソッド呼び出し(super・ブロック付き・yield) (Ruby 2.7.0 リファレンスマニュアル)
さいごに
これからは2、3日に1回くらい競プロの問題を解こうかなって思ってます。
以上
【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の違いって?
想定ケース
サイトのメインカラーある色を変数に指定する。
なお、今、デンタル系のアプリを作成しているので、こんな色をメインで使おうかなって思ってます。
- 指定する色:キシリトールっぽい緑
- 変数名:
main-green
※ キシリトールっぽい緑 はこんなイメージ。
実践
1.変数の指定
$main-green: #038935;
ポイント
先頭に$
をつけます。
2.使用する
タイトル文字(titleクラスを指定)にmain-green
を使用したいと思います。
.title { color: $main-green; }
これでOK
できあがり
口からミントの味がしてきましたね。
参考
【Rails】マイグレーションファイルで外部キーを作成
はじめに
ひざびさにマイグレーションファイルをいじっていたら、書き方を忘れたので、記録します。
例
設定
テーブルは以下の2つある想定
users
テーブルitems
テーブル
アソシエーション
user
has_manyitems
items
belongs_touser
やりたいこと
このケースで、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
参考
【vim】複数行をインテンドする
前提
MacOSを使用しております。
大まかな流れ
範囲の先頭行へ移動
shift
+v
でビジュアルモードにj
やk
や(数字)G
で範囲を選択>
や<
でインテンドを操作、もう1インテンドしたいときは、
.
を押す
説明
ビジュアルモードって何?
変更する範囲に適したコマンドを選択するのが難しいこともあります。そんなときはビジュアルモードを使ってください (04.4 ビジュアルモード - Vim日本語ドキュメントより)
起動方法
起動コマンド | 結果 |
---|---|
v | カーソル上の文字から範囲指定開始 |
V | カーソル上の列から範囲指定開始 |
control + v | ブロックで指定できる (説明割愛) |
インテンド操作
- コマンド
起動コマンド | 結果 |
---|---|
< | 左インテンド |
> | 右インテンド |
参考
「単発繰り返し」の.
- 最後の変更を繰り返すコマンド