0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ruby on rails を AWS Cloud9で実施 3 model作成 

Last updated at Posted at 2022-08-09

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

Model を作成する

Rails が提供するModelは、
原則としてデータベース上にある
テーブルと対応しており

テーブルのデータを簡単に操作する機能を提供します

MVC アーティテクチャの再確認

  • Model:アプリで扱うデータを保持し、操作する
  • View:受け取ったデータを表示する
  • Controller:ユーザーからのリクエストを処理し、モデル・ビューを呼び出して結果を返す

Model:アプリで扱うデータを保持し、操作する
と記載のあるように
User という テーブルを作成した場合
モデルで操作します

モデルを使うことで
SQLを直接記述することなく
わかりやすい Rubyのコードでデータを操作できます

rails g model コマンドで user に関するモデルを作成

rails g modelの使い方

$ rails g model モデル名

AWS Cloud9
でuserモデルを作成してみます

rails g model User name:string age:integer

上記コマンドで

User はモデル名

その下がデータベースのデータの構造です

name:string カラム名:データ型
age:integer カラム名:データ型

スペース区切りで複数 設定できます

image.png

image.png

上記のマイグレーションファイルのスペルミスがないことを確認し
マイグレーションを実施します

マイグレーション

マイグレーションは Rails で自動生成した設定内容をデータベースに反映させます

マイグレーションをもう少し、簡単に言うと
データベースのテーブルを作成・変更するための仕組みです

Railsは、マイグレーションファイルという設定ファイルを自動作成して
それをmigrationコマンドで、データベースに反映させます

以下のコマンドでデータベース設定を反映することが可能です

rails db:migrate

image.png

エラーが出なければOKです

もしデータベース設定を取り消す場合は以下のコマンドになります

rails db:rollback

データベース構造の確認

データベースをコマンドで操作できるモードに変更します
以下のコマンドを利用します

rails dbconsole

image.png

終わるときは
.q でデータベースを抜け出せます

データベースの操作をする rails console

model クラスでデータベースを操作します

rails コンソールを立ち上げます

rails c

#コンソール内でテーブル確認↓ 裏では自動でSQLが生成されて実行される
User.all

#テスト用のデータを入れてみる

user = User.new
user.name = '名前入力'
user.age = 数字入力
user.save

#一括で登録するとき
aaa = User.new(name:'aaaniki',age:20)
aaa.save
#一括で登録するとき
aaa2 = User.new(name:'aaaniki',age:20)
aaa2.save

#コンソール内でテーブル確認
User.all

#終わるとき
exit

上記コマンドで3件のレコードがテーブルに登録できたと思われます

データベースの値を表示

users_controller.rb
でUserデーブルの値を インスタンス変数に格納します
@users = User.all の部分です

users_controller.rb
class UsersController < ApplicationController
  def index
    # @ をつけるとインスタンス変数になる
    # @num は インスタンス変数 となる クラスのインスタンスごとに保持される変数
    # インスタンス変数 は コントローラーの値を View に受け渡すことができる
    @num = 10 + 1 + 1 + 1 - 4
    @users = User.all
  end
end

Viewに値を表示します

index.html.erb
<!DOCTYPE html>
<html lang="ja">
<head>
    <title>初めてのrailsアプリケーション</title>
</head>
<body>
<h1>rails<h1>

<p>views は分離するといい 見やすくなる!</p>

<p>インスタンス変数 は コントローラーの値を View に受け渡すことができる</p>
<p>以下がその例です!</p>
<p><%= @num %></p>

<p>実はusers_controller.rb で 読み込むviewsを指定しなくてもいい</p>
<p>これが設定よりも規約 のrailsの特徴!</p>

<p>データベースの値を取り出します</p>
<ul>
  <% @users.each do |user| %>
    <li>
       <%= user.id %>,<%= user.name %>,<%= user.age %>
    </li>
  <% end %>
</ul>

</body>
</html>

表示を確認します

image.png

... 見た目はともかくデータベースの値を取り出すことに成功しました!!!

次回からは 回答のできる掲示板 を作成していきます

MVC アーティテクチャを想像しながら作成するとわかりやすいです

  • Model:アプリで扱うデータを保持し、操作する
  • View:受け取ったデータを表示する
  • Controller:ユーザーからのリクエストを処理し、モデル・ビューを呼び出して結果を返す

最終的には
ある程度 見た目も綺麗な
回答のできる掲示板掲示板を作ろうと考えております

興味のある方は ↓ を見ていただけますと幸いです!!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?