学校向けのレビューアプリケーションを作成しています。ユーザーは、ログインしている場合にのみ学校を確認できます。
あなたが今できること:
レビューを書いて、1〜5の評価を追加できます。アプリケーションはレビューを保存します。
私がしたいこと:
ログに記録されたuser_idを保存したいと思います。したがって、レビューはユーザーと学校に属します。
しかし、私はそれを行う方法について少し混乱しています。どんなアイデアやガイドラインも大歓迎です=)
レビューモデル:
class Review < ActiveRecord::Base
belongs_to :school
belongs_to :user
attr_accessible :content, :rating
end
学校モデル:
class School < ActiveRecord::Base
has_many :reviews
..more code..
end
ユーザーモデル:
class User < ActiveRecord::Base
has_many :reviews
...more code..
end
レビューコントローラー:
class ReviewsController < ApplicationController
def create
@school = School.find(params[:school_id])
@review = @school.reviews.create!(params[:review])
redirect_to @review.school, notice: "Review has been created."
end
end
レビューフォーム
<%= form_for [@school, Review.new] do |f| %>
<h3>Write a review</h3>
<div class="reviews_comments_container">
<div class="review_box">
<ol class="radio-rater">
<%= f.radio_button(:rating, 1) %>
<%= f.radio_button(:rating, 2) %>
<%= f.radio_button(:rating, 3) %>
<%= f.radio_button(:rating, 4) %>
<%= f.radio_button(:rating, 5) %>
</ol>
</div>
<div class="review_box" id="review_textarea">
<%= f.text_area :content, rows: 4, cols: 70 %>
</div>
<div class="review_box">
<%= f.submit 'Save your review', :class => "btn" %>
</div>
</div>
<% end %>
移行ファイル:
class CreateReviews < ActiveRecord::Migration
def change
create_table :reviews do |t|
t.text :content
t.integer :rating
t.belongs_to :school
t.belongs_to :user
t.timestamps
end
add_index :reviews, [:school_id, :user_id]
end
end