Ruby、Railsの勉強ことはじめ

普段はフロントエンド エンジニアとしてお仕事をしているため、サーバーサイドの知識がないわたし。

フロントエンドでお仕事する上でサーバーサイドの設計が理解できないと、全体設計の話がわからない😫

Express(Node.js)で簡単なTODOリストのAPI作ってみたり、Firebase(mBaaS)でDatabaseやStrage機能使ってみたけど、サーバーサイドへの理解は深まらない・・😫

ということで、自分でREST APIを作るべくRubyを勉強してみることにしました!

なぜRubyか・・?

それはProgateでRuby、Railsコースがとっても充実していたからです🎉

今回はRubyコース(5レッスン)、Railsコース(15レッスン)完走したのでメモした事を残しておきたいと思います〜!(仕事しながらでも1週間で完走できるボリュームです)

Modelsまわり

# モデルとマイグレーションファイルの作成
$ rails g model User name:string email:string

# マイグレーションファイルのみ作成する場合
$ rails g migration ファイル名
# generateされたマイグレーションファイルに追記
def change
    add_column :users, :image_name, :string(テーブル, カラム, 型)
    remove_column: 同上
end

# マイグレーションをデータベースに反映
$ rails db:migrate

# バリデーションをmoduled > user.rbに追記
validates :name, { presence: true} // 空白を防ぐ
validates :email, { uniqueness: true } //重複を防ぐ

Controllersまわり

# コントローラーファイルの作成
$ rails g controller users index 

# Flash
flash[:notice] = "登録が完了しました"

# セッション
session[:user_id]

# 全アクションで共通する変数の定義(application_controller.rb)
before_action :set_current_user, { only: [:edit, :update]} // アクションを指定して処理前に呼び出される
…
def set_current_user
    @current_user = User.find_by(…)
end

# 型変換 params[:id]はstringなので変換する1”.to_i → 1

# Fileクラス
File.write(“public/sample.txt”, “ファイルの中身”)

# 画像の場合
Image = params[:image] //readメソッドでデータの取得ができる
File.binwrite(“public/user_images/#{@user.image_name}”, image.read)

Viewsまわり

// each文
<% @users.each do |user| %>

// エラーメッセージ
<% @user.errors.full_messages.each do |message| %>

// リンク(defaultでgetを探す)
<%= link_to("ユーザー一覧", "/users/index”, { method: “post”} ) %>

// HTMLコードを第一引数に指定するとき
<%= link_to(“URL”) do %>
	<HTML>
<% end %>

// データ送信先を指定(defaultでpostを探す)
<%= form_tag("/users/create") do %>

// 画像を送信したいときのoption
<%= form_tag(“…”, {multipart: true}) do %>

ひと通りprogateやってみて、MVCが理解できました。普段お仕事でNuxt.jsを使っているのでVCは似てるなぁと思って入りやすかったです👀

あと、RailsコースでControllersの変数をViewsで受け取る際に <%= @hoge %> のように書くのですが、ejsに似てるなぁ〜と思ったらejsだった・・(!)

また、送信フォーム(新規会員登録など)を作るときは、ルーティングに送信専用のパスを設定するのですが、(post "users/create" => "users#create" みたいな感じで)createのcontroller側のバリデーションに引っかかった場合、画面が点滅(URLが"users/create"から"users/new"に変わるため )するのが、普段JavaScript使って送信フォーム作るときにはない挙動なので、気になりました👀

難しかったところは、Railsのエラーが出たときの対応です。原因はだいたいタイポとかパスの「/」が足りてなかったり。progate上のエディタを使うので、いつも使っているvscodeのありがたみが分かったなぁ。

全体的には、にんじゃわんこが可愛く教えてくれるので、たのしかったです〜😊

これからRailsチュートリアルやっていき👊🏻🌟


スキ頂けると嬉しいです〜