#Rails:カラム名変更

タイピングミスによる、カラム変更が必要な事態になったため、
自分用メモとして記載します!

[公式ガイド]

Active Record マイグレーション - Railsガイド

migrationファイルの作成

$rails generate migration rename_neme_column_to_users

編集

class UserMigration < ActiveRecord::Migration[x.x]
  def change
    rename_column :users, :neme, :name
   # rename_column :テーブル名, :変更前カラム名, :変更後カラム名
  end
end

反映

rails db:migrate

自己学習の段階でリカバリー作業は積極的に実施していきます!

Ruby文法メモ

Ruby文法メモ

基礎文法ですが、自分用メモとして残しておきます。

users = [
  { name: '太郎', age: 27 },
  { name: '次郎', age: 25 }
]

users.each do |user|
  puts user
end
# {:name=>"太郎", :age=>27}
# {:name=>"次郎", :age=>25}

users.each do |user|
  puts user[:name]
end
# 太郎
# 次郎

users.each do |user|
  puts "私の名前は#{user[:name]}です。#{user[:age]}です。"
end
# 私の名前は太郎です。27です。
# 私の名前は次郎です。25です。
characters = [
  { name: '太郎', age: 27 },
  { name: '次郎', age: 25 },
  { name: 'xxx' }
]

characters.each do |character|
  puts '--------------------'
  puts character
  puts "名前は#{character[:name]}です"

  if character[:age]
    puts "年齢は#{character[:age]}歳です"
  else
    puts '年齢は秘密です'
  end
end

# --------------------
# {:name=>"太郎", :age=>27}
# 名前は太郎です
# 年齢は27歳です
# --------------------
# {:name=>"次郎", :age=>25}
# 名前は次郎です
# 年齢は25歳です
# --------------------
# {:name=>"xxx"}
# 名前はxxxです
# 年齢は秘密です
# もし条件式がtrueなら処理Aを行う、そうでなければ処理Bを行う
if 条件式
  処理A # true
else
  処理B # false
  end

# もし条件式1がtrueなら処理Aを行う、
# そうでなくもし条件式2がtrueであれば処理Bを行う、いずれでもなければ処理Cを行う
if 条件式1
  処理A # 条件式1:true
elsif 条件式2
  処理B # 条件式1:false
     # 条件式2:true
else
  処理C # false
end

if characters[0][:name] == '太郎'
  puts '名前は太郎です'
elsif characters[0][:name] == '次郎'
  puts '名前は次郎です'
else
  '不明'
end

# 名前は太郎です
# メソッド:複数の処理を1つにまとめたもの

def メソッド名
  処理
end

def info
  puts '太郎です'
end
info

def メソッド名(引数名)
  処理
end

def info(name)
  puts "#{name}です"
end
info('太郎')

# 太郎です

def info(name, age)
  puts "私の名前は#{name}で、年齢は#{age}です"
    end
info('太郎', 27)

# 私の名前は太郎で、年齢は27です
# 戻り値:呼び出し元に値を返す。
def メソッド名
  returnend

変数名 = メソッド名
puts 変数名

def name
  returnend


# 戻り値:呼び出し元に値を返す。
def メソッド名?(_引数名)
  returnend

puts メソッド名?(_引数名)


def メソッド(キーワード引数1:, キーワード引数2:)
  処理
end

メソッド(キーワード引数1: xxxx, キーワード引数2: yyyy)

Ruby on Rails学習記録2

モデル

アプリケーションが扱うデータや処理を表現する仕組み

モデルの作成
$rails g model モデル名 カラム名:データ型
$rails g model Post name:text
# 規則:テーブルの作成には単数形、頭文字は大文字。
データベースに(変更を)反映する
$rails db:migrate
# 反映されていない場合、マイグレーションエラーが発生する。
メソッド 詳細 使用例
all 全てを取得
取得内容は、配列。
インデックス番号指定で取得可。
Post.all
Post.all[0]
new インスタンスを作成 Post.new(content:"xxxx")
save 作成したインスタンスをテーブルに保存 post.save
destroy データを削除 post.destroy
モデル内のデータを編集(更新)する。
$rails console
> post = Post.find_by(id:1)
# Postモデルからid:1を取得する。

> post.content = "更新内容"
# 既存contentの内容を上書きする。

> post.save
# データベースへ保存する。
# update_atカラムの時刻が更新される。
【補足】データベース参照コマンド
$rails dbconsole
.table      <- table_info
.header on  <- header_info_on
共通のレイアウト:application.html.erb

ヘッダー、フッターなどをまとめると良い。
<%= yield %>に各HTMLファイルの内容が代入される。

link_toメソッド

タグを作成する。<%= %>で囲む必要あり。
第一引数に表示する文字を、第二引数に URLが代入される。

<%= link_to("ABOUT","/about") %>
<a href="/about">ABOUT</a>
find_byメソッド

ある条件に合致するデータを取得する。

モデル名.find_by(カラム名: 値)
Post.find_by(id:2)
変数params
  • params[:○○]を使ったルーティングのURLから値を取得する。値はハッシュとして入る。
  • name="○○"が付いたフォームの入力内容を受け取る
URL:xxxxx.posts/1
# routing
get "posts/:id"   => "posts#show"

# controller
def show
 @id = params[:id]   <- {id:1} というハッシュが、変数paramsへ入る
end

# view
<% @posts.each do |post| %>
  <%= link_to(post.content, "/posts/#{post.id}") %>
<% end %>
form_tagメソッド

フォームに入力されたデータを指定されたURLに送信することが可能。

form_tag(送信先のURL) do

<input type="submit">のボタンを押した時に、データが送信される。
name属性:html.erbタグにname属性を指定すると、入力データを送信することが可能。
name属性の値をキーとしたハッシュがRailsに送信される。

<%= form_tag("/posts/create") do %>
  <textarea name="content"></textarea>
  <input type="submit" value="投稿">
<% end %>
データを受け取る

name属性を指定したフォームに入力されたデータは、アクション内で受け取ることが可能。
フォームのデータは、変数paramsで受け取る。
paramsはname属性に設定した文字列をキーとしたハッシュになっている。

@post = Post.new(content: params[:content])
# Postモデルのcontentカラムへparams[:content]で受け取った内容をpost変数に代入する。
@post.save
# 受け取った内容を保存する。
redirect_to("/posts/index")
# 受け取った内容をposts/indexへ受け渡す。
orderメソッド

データを並び替える。
order(カラム名: 並び替えの順序)
順序:昇順(:asc)と降順(:desc)

@posts = Post.all.order(created_at: :desc)

Ruby on Rails学習記録1

アプリ作成
$rails new アプリ名
サーバー起動
$rails sever(省略可:s)

ルーティング・コントローラー・ビュー

内容 詳細
routing ブラウザ(URL)とコントローラを繋ぐ役割
controller ビューをブラウザに返す
view ページの「見た目」を作るためのHTMLファイル
コントローラー作成
$rails generate(省略可:g) controller コントローラ名 アクション名
# 同じ名前のコントローラがすでにある場合は、このコマンドを使うことはできない

# rails g コマンドが反応しない場合
$spring stop
アクション:コントローラ内のメソッド

アクションはブラウザに返すビューをviewsフォルダの中から見つけ出す。

class HomeController < ApplicationController
  def top 
  end
end
each文:配列の中身を1つずつ取り出す
<% 
  posts = [
  "hello Ruby1",
  "hello Rails2"
  ]
%>

<%= posts.each do |post| %>
<%= post %>
<% end %>
アクションは変数指定可能。

@変数名でアクションで定義した変数をビューに表示可能。
※@はつけ忘れないようにする。

class PostsController < ApplicationController
  def index
    @posts = [
    "hello Ruby",
    "hello Rails"
    ]
  end
end

# ビューの中身
<% @posts.each do |post| %>
<%= post %>
<% end %>
ルーティングの作成
get "URL" => "コントローラー名#アクション名"
get "home/top" => "home#top"

# ルーティングのURLは対応するアクションがあれば変更可能。
get "home/top" => "home#top"
get "top" => "home#top"
get "/"   => "home#top"

# ルーティングで設定したURLは、ビューファイルのリンク指定で利用可能
get "/"   => "home#top"
<a href="/">TOP</a>
get "about" => "home#about"
<a href="/about">ABOUT</a>


erbファイル:Embedded Ruby(埋め込みRuby)の略
内容 詳細
<% %> Rubyコードの記述可能。ビュー表示不可。
<%= %> Rubyコードの記述可能。ビュー表示可。
<% post1 = "hello Ruby" %>
<% post2 = "hello Rails" %>

<%= post1 %>
> hello Ruby
<%= post2 %>
> hello Rails

Rails:MVCの流れについて

本日は、Rails記事投稿の一部を学習しました。

ポイント

  • モデルの情報は、コントローラーのアクションへ@変数で代入する。 (ビューには直接書かない)
  • params[:id]はURL側の数値を代入する。
  • find_byはモデルから情報取得する。
  • params+find_byの組み合わせでURLとモデルを紐付ける。
url:@@@xxxx/1

#route.rb
get 'xxxx/:id' => 'zzz#yyy'
# get 'xxxx/1'   => 'zzz#yyy'

# zzz_controller.rb
def yyy
    params[:id]
    # {id:1}のハッシュが代入される
end

# yyy.html.erb
<%= @id%>
>1

# --------------------------------------------------
# zzz_controller.rb
def yyy
    @post = Post.find_by(id: params[:id])
    # params[:id]と一致するidデータをPostモデルから取得する。
end

# yyy.html.erb
<%= @post.content%>
>hello Rails

<%= @post.name%>
>Ken

# --------------------------------------------------
# zzz_controller.rb
def aaa
    # Postモデルを全取得し、変数postsへ代入する。
    @posts = Post.all
end

def yyy
    # params[:id]と一致するidデータをPostモデルから取得する。
    @post = Post.find_by(id: params[:id]) 
end

# zzz_controller.rb
# 変数posts(=Post.all)の配列を変数postへ代入し、each文で一つずつ取り出す。
<% @posts.each do |post|%>
    # link_toでaタグ作成。
    # 'post.content'の内容をビューへ表示。
    # #{}で変数展開。postのidを取得してリンクとする。
    <%= link_to(post.content,'posts/#{post.id}')%>
<% end %>
    # route.rb
    #  get 'xxxx/:id' => 'zzz#yyy' 
    # zzz_controller.rb
    #  => def yyy 
    #     @post = Post.find_by(id: params[:id])
    #    end
    #  => yyy.html.erb
# --------------------------------------------------

今回の学習で、MVC(モデル/ビュー/コントローラ)の流れを少しずつ理解できました。
今後も引き続き学習していきます。

最後まで読んでいただきありがとうございました。

学習時間目標 :1,000
本日の学習時間:3
目標時間まで :954

【お知らせ】ブログ更新について

タイトルにあるとおり、

ブログ更新についてのお知らせです。

 

本日より、ブログ更新頻度を1週間に1回とします。

 

理由は単純で、量が薄いので、

ここからは質(と言えるほどではないですが。)をあげるようなコンテンツとしたいと思います。

 

学習は毎日続けるため、

進捗はツイッターで発信します。

 

 

最後まで読んでいただきありがとうございます。

抑えておきたい。CSS用チートシート

本日は、cssチートシートをまとめました。
今後も順次追加予定です。

CSSチートシート

css 詳細 備考
color 文字色
font-size 文字の大きさ
font-weight 文字の太さ
font-family フォント種類
letter-spacing 文字間隔
line-height 行間隔
background-color 背景色
border 枠線 枠線の太さ、種類、色を指定可
border-radius 角を丸くする
opacity 要素を透過 0.0~1.0
rgba 色を透過
padding 要素の余白(内側) top,buttom,left,right
margin 要素の余白(外側) top,buttom,left,right:auto+:margin:0 auto+widhtで中央配置可
width 横幅 px %(親要素に対する相対値)
height 高さ px %(親要素に対する相対値)
list-style リストマーク noneで黒点を消す
float 要素の並び left(左横並び),right(右横並び),要素ごとにleft,rightを指定すると左右配置も可
position: absolute 要素を重ねる 基準:サイト全体の左上。top+leftで位置を指定。right+bottom併用可
position: relative ーーー position: absolute;の親要素へ指定することで、変更位置の基準とする。
text-align 要素を寄せる インライン要素やインラインブロック要素に対して、
left(左寄せ),right(右寄せ),center(中央寄せ)可。
divタグ(ブロック要素)内のインライン要素やインラインブロック要素は効果あり。
display: inline-block block -> inline-block
background-image: url(画像のURL) 背景画
background-size 背景画のサイズ指定 cover(範囲を埋め尽くす)
hover カーソル変化
transition アニメーション 変化要素と時間を指定する。hoverと合わせて使う。


最後まで読んでいただきありがとうございます。

詳細 進捗
学習時間目標 1,000時間
本日の学習時間 4時間
目標時間まで 982時間