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