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チュートリアルやっていき👊🏻🌟
スキ頂けると嬉しいです〜