学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Rails6.1 | 民泊予約アプリ作成 | 17 | モデル作成

↓↓クリックして頂けると励みになります。


16 | ページ作成】 << 【ホーム】 >> 【18 | コントローラー作成


部屋モデル作成
部屋モデル作成

Ruby on Railsの中で、「モデル(Model)」はMVC(Model-View-Controller)アーキテクチャの一部です。
モデルはアプリケーションのデータとデータベースとの間で中間層の役割を果たし、データの操作やアプリケーションの管理をします。
Railsモデルは通常、データベース内の特定のテーブルと直接関連付けられます。
モデルはそのテーブルのレコードを表現し、テーブル内の各カラムはモデルの属性としてマッピングされます。
モデルを使用して、データベース内のデータを作成、読み取り、更新、削除する操作を簡単に行うことができます。
また、モデルではデータの整合性を保つためにバリデーションルールを定義できます。
これにより、不正なデータがデータベースに保存されるのを防ぎます。


では早速、ジェネレーターを利用して部屋のモデルを作成してみます。


コマンド
長いですが全部つながっています。1文です。
rails g model Room home_type:string room_type:string accommodate:bigint bed_room:bigint bath_room:bigint listing_name:string summary:text address:string is_tv:boolean is_kitchen:boolean is_air:boolean is_heating:boolean is_internet:boolean price:bigint active:boolean user:references


「db\migrate\20200724093933_create_rooms.rb」ファイルの記述を以下のように変更します。


記述更新 db\migrate\20200724093933_create_rooms.rb
18行目に「, default: false」の記述を追加しています。

class CreateRooms < ActiveRecord::Migration[6.1]
  def change
    create_table :rooms do |t|
      t.string :home_type
      t.string :room_type
      t.bigint :accommodate
      t.bigint :bed_room
      t.bigint :bath_room
      t.string :listing_name
      t.text :summary
      t.string :address
      t.boolean :is_tv
      t.boolean :is_kitchen
      t.boolean :is_air
      t.boolean :is_heating
      t.boolean :is_internet
      t.bigint :price
      t.boolean :active, default: false
      t.references :user, null: false, foreign_key: true

      t.timestamps
    end
  end
end



マイグレーションを適用してデータベースに反映させます。
コマンド マイグレーション
rails db:migrate


ユーザモデルと部屋モデルを関連付けします。
記述追加 app\models\user.rb
「has_many :rooms」の追加(3行目)

class User < ApplicationRecord

  has_many :rooms

  has_one_attached :avatar

  validates :full_name, presence: true, length: {maximum: 50}

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable,
         :confirmable
end



app\models\room.rb
バリデーションの記述追加します。

class Room < ApplicationRecord

  belongs_to :user

  validates :home_type, presence: true
  validates :room_type, presence: true
  validates :accommodate, presence: true
  validates :bed_room, presence: true
  validates :bath_room, presence: true
  
end


これで部屋モデルの準備が整いました。



16 | ページ作成】 << 【ホーム】 >> 【18 | コントローラー作成


↓↓クリックして頂けると励みになります。