SinatraのDBにリレーションの設定もしてみる

この前の続きになります。
SinatraとActiveRecord,SQLite,Haml等を使ってWebアプリの雛形を作ってみた
SinatraのDBに後からカラムを追加、ついでに型も修正

せっかくテーブルを作ってカラムの追加も出来るようになったので、もう一つテーブルを作ってリレーションしてみます。

作るのはUserテーブルで、
User.idとComment.user_idを関連付けします。

Migration

まずはUserテーブルを作成します。

$ bundle exec rake db:create_migration NAME=users VERSION=004

004_users.rbというファイルが出来るので編集してカラムを追加します。


$ emacs db/migrate/004_users.rb

class Users < ActiveRecord::Migration[5.0]
  def change
    create_table :users do |t|
+      t.text :name
+      t.timestamps
    end
  end
end

リレーション

UserとCommentの関係は1対多の関係を想定しています。


  class Comment < ActiveRecord::Base
+   belongs_to :users
  end
  
+ class User < ActiveRecord::Base
+   has_many :comments
+ end

使い方

こんな感じでデータ取得できるようになります。

name = User.find(comment.user_id).name

鹿児島県の出水市という所に住んでいまして、インターネット周辺で色々活動して行きたいと思ってるところです。 Webサイト作ったり、サーバ設定したり、プログラムしたりしている、釣りと木工好きなMacユーザです。 今はデータサイエンスに興味を持って競馬AI予想を頑張ってます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください