ステーキホイザード
Phillyチーズケーキあなたがそれを愛しているかどうか、あなたはおそらく最高のものである終わりのない議論を聞いたことがあるかどうか.
Enter Steak Whizard - Webアプリケーションだけでフィリーズで最高のステーキを見つけるために専用.レビュー、レート、および議論を解決しましょう.
アプリケーションは、応答フロントエンド(およびブートストラップライブラリの非常に有り難い助け)とRuby on Rails PostgreSQLデータベースでバックエンドで構築されています.herokuに主催される.
データベースのテーブルにマップされている3つの異なるRailsモデルがあります.レビューテーブルは、ユーザーの1つのインスタンスとステーキの1つのインスタンスに属する結合テーブルです.
サイトはユーザーにユーザ名とパスワードでアカウントを作成するよう依頼します.パスワードが保存され、bcryptとハッシュされ、安全にデータベースに格納されます.
ユーザーが独自のユーザ名を持つアカウントを正常に作成すると、ユーザーコントローラ内のユーザー固有のIDでセッションが作成されます.
アプリケーションは4つのページクライアントサイドルーティングによって提供-ホーム、最高のステーキ、私のレビュー、およびステーキを追加します.
ホームは着陸ページとして機能し、カードコンポーネントとしてステーキクラスの各インスタンスをレンダリングします.カードは、“お気に入り”と“レビュー”ボタンを、条件に応じてユーザーのレビューとお気に入りのステーキに依存してレンダリング含まれています
バックエンドでは、ユーザーがステーキを確認すると、投稿要求は
レビューされたステーキは
最良のステーキページはAPIエンドポイントから取得します
そこには、ステーキホイザード.それはスピンを与えると私はあなたの考えを知っている-誰が知っている、あなたも道に沿ってお好みのフィリーチーズケーキを見つけることができます.
Enter Steak Whizard - Webアプリケーションだけでフィリーズで最高のステーキを見つけるために専用.レビュー、レート、および議論を解決しましょう.
アプリケーションは、応答フロントエンド(およびブートストラップライブラリの非常に有り難い助け)とRuby on Rails PostgreSQLデータベースでバックエンドで構築されています.herokuに主催される.
データベースのテーブルにマップされている3つの異なるRailsモデルがあります.レビューテーブルは、ユーザーの1つのインスタンスとステーキの1つのインスタンスに属する結合テーブルです.
class Review < ApplicationRecord
validates :rating, presence: true, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 10 }
validates :toppings, presence: true
validates :title, presence: true
belongs_to :user
belongs_to :steak
end
ユーザーは多くのレビューとレビューを介して多くのステーキがあります:class User < ApplicationRecord
validates :username, presence: true, uniqueness: true
validates :fav_steak, presence: true
has_many :reviews
has_many :steaks, through: :reviews
end
ステーキは、レビューを介して多くのレビューと多くのユーザーがあります:class Steak < ApplicationRecord
validates :restaurant, presence: true, uniqueness: true
has_many :reviews
has_many :users, through: :reviews
end
また、有効なデータがデータベースに保存されていることを確認するために、アクティブなレコード検証を使用します.サイトはユーザーにユーザ名とパスワードでアカウントを作成するよう依頼します.パスワードが保存され、bcryptとハッシュされ、安全にデータベースに格納されます.
ユーザーが独自のユーザ名を持つアカウントを正常に作成すると、ユーザーコントローラ内のユーザー固有のIDでセッションが作成されます.
def create
user = User.create!(user_params)
session[:user_id] = user.id
render json: user, status: :created
end
アプリケーションコントローラ内でauthorize
メソッドは現在のユーザを:user_id
セッションで保持し、インスタンス変数に代入します@current_user
, 変数が真でない場合、エラー応答をレンダリングします.before_action :authorize
private
def authorize
@current_user = User.find_by(id: session[:user_id])
render json: { error: ["Not authorized"] }, status: :unauthorized unless @current_user
end
注意before_action
コントローラアクションの前に実行するメソッドです.他のコントローラがアプリケーションコントローラから継承するとき、これは、ユーザーが要求した内容を表示する権限があることを保証します.アプリケーションは4つのページクライアントサイドルーティングによって提供-ホーム、最高のステーキ、私のレビュー、およびステーキを追加します.
ホームは着陸ページとして機能し、カードコンポーネントとしてステーキクラスの各インスタンスをレンダリングします.カードは、“お気に入り”と“レビュー”ボタンを、条件に応じてユーザーのレビューとお気に入りのステーキに依存してレンダリング含まれています
バックエンドでは、ユーザーがステーキを確認すると、投稿要求は
create
レビューコントローラのメソッドclass ReviewsController < ApplicationController
def create
review = @current_user.reviews.create!(review_params)
steak = Steak.find(params[:steak_id])
steak.update(rating: steak.calc_avg_rating)
render json: @current_user, status: :created
end
private
def review_params
params.permit(:steak_id, :title, :comment, :rating, :toppings)
end
end
このメソッドは、@current_user
変数.レビューされたステーキは
[:steak_id]
を返します.ステーキの評価は、インスタンスメソッドによって返される値で更新されますcalc_avg_rating
:class Steak < ApplicationRecord
def calc_avg_rating
self.reviews.average(:rating)
end
end
方法は、ステーキの関連したレビューから平均評価を計算するために能動レコード協会および方法をハーネスする.最良のステーキページはAPIエンドポイントから取得します
/steaks/highest-rated
そして、対応するレビューで対応するステーキをレンダリングします.バックエンドでは、エンドポイントはhighest_rated
Steaksコントローラのメソッドdef highest_rated
max = Steak.maximum(:rating)
render json: Steak.where(rating: max)
end
ページでは、ステーキの関連レビューは、同様に感謝してレンダリングされますhas_many :reviews
ステーキシリアル化における関係class SteakSerializer < ActiveModel::Serializer
attributes :id, :restaurant, :rating
has_many :reviews
end
同様に、My Reviewページには、同じ関連付けを使用しているが、ユーザーシリアライザーで現在のユーザーインスタンスに関連付けられたレビューが表示されます.class UserSerializer < ActiveModel::Serializer
attributes :id, :username, :fav_steak
has_many :reviews
has_many :steaks
end
最後に、追加のステーキページで、ユーザーはステーキクラスの新しいインスタンスを作成し、対応するレビューを残します.そこには、ステーキホイザード.それはスピンを与えると私はあなたの考えを知っている-誰が知っている、あなたも道に沿ってお好みのフィリーチーズケーキを見つけることができます.
Reference
この問題について(ステーキホイザード), 我々は、より多くの情報をここで見つけました https://dev.to/michaellobman/steak-whizard-2ikbテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol