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

こういうブログもありました。

人気のあるブログ:

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


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