Scaffoldでリレーション rails
Scaffoldを利用して1対多関係テーブルの実装。
「ある部屋にどのユーザがいるのか」という関係性。
まず
userテーブルを作成
rails g scaffold userkanri username:string mail:string
roomテーブルを作成
rails g scaffold room roomname:string user_id:integer
そして上記のurlの通りに
部屋はユーザを「複数所有する」ので
app/models/room.rb
を編集
has_many :users
を追加
*たくさん持つですよ
*複数形にする!!
次に、
ユーザはどの部屋に「属しているか」ということで
app/models/user.rb
を編集
belongs_to :room
を追加
*属す!!そのまま!!
*belongs_toの細かい説明はこちら
「参照元テーブルから参照先テーブルにアクセスする」
http://railsdoc.com/references/belongs_to
そして
app/controllers/rooms_controller.rb
に
@users = User.all
を追加。
また、hamlの場合は
index.html.hamlをこんな感じで編集。
%h1 Listing rooms
%table
%tr
%th Roomname
%th User
%th
%th
%th
- @rooms.each do |room|
%tr
%td= room.roomname
%td= room.user_id
%td= @users[room.user_id-1].username
%td= link_to 'Show', room
%td= link_to 'Edit', edit_room_path(room)
%td= link_to 'Destroy', room, :method => :delete, :data => { :confirm => 'Are you sure?' }
%br
= link_to 'New Room', new_room_path
そして、サーバを起動させて
http://localhost:3000/rooms
へgo!!