Complete Lesson 36

main
Simon Quigley 1 year ago
parent 2461c5b015
commit 6f95e3b3dc

@ -0,0 +1,2 @@
class FavoritesController < ApplicationController
end

@ -0,0 +1,2 @@
module FavoritesHelper
end

@ -0,0 +1,4 @@
class Favorite < ApplicationRecord
belongs_to :movie
belongs_to :user
end

@ -10,6 +10,7 @@ class Movie < ApplicationRecord
validates :rating, inclusion: { in: RATINGS } validates :rating, inclusion: { in: RATINGS }
has_many :reviews, dependent: :destroy has_many :reviews, dependent: :destroy
has_many :favorites, dependent: :destroy
def flop? def flop?
total_gross.blank? || total_gross < 225_000_000 total_gross.blank? || total_gross < 225_000_000

@ -2,6 +2,7 @@ class User < ApplicationRecord
has_secure_password has_secure_password
has_many :reviews, dependent: :destroy has_many :reviews, dependent: :destroy
has_many :favorites, dependent: :destroy
validates :name, presence: true validates :name, presence: true
validates :email, presence: true, format: { with: /\S+@\S+/ }, uniqueness: { case_sensitive: false } validates :email, presence: true, format: { with: /\S+@\S+/ }, uniqueness: { case_sensitive: false }

@ -1,4 +1,5 @@
Rails.application.routes.draw do Rails.application.routes.draw do
resources :favorites
resource :session, only: [:new, :create, :destroy] resource :session, only: [:new, :create, :destroy]
resources :users resources :users
resources :reviews resources :reviews

@ -0,0 +1,10 @@
class CreateFavorites < ActiveRecord::Migration[7.0]
def change
create_table :favorites do |t|
t.references :movie, null: false, foreign_key: true
t.references :user, null: false, foreign_key: true
t.timestamps
end
end
end

13
db/schema.rb generated

@ -10,7 +10,16 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2023_09_27_122117) do ActiveRecord::Schema[7.0].define(version: 2023_09_27_123732) do
create_table "favorites", force: :cascade do |t|
t.integer "movie_id", null: false
t.integer "user_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["movie_id"], name: "index_favorites_on_movie_id"
t.index ["user_id"], name: "index_favorites_on_user_id"
end
create_table "movies", force: :cascade do |t| create_table "movies", force: :cascade do |t|
t.string "title" t.string "title"
t.string "rating" t.string "rating"
@ -43,5 +52,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_09_27_122117) do
t.boolean "admin", default: false t.boolean "admin", default: false
end end
add_foreign_key "favorites", "movies"
add_foreign_key "favorites", "users"
add_foreign_key "reviews", "movies" add_foreign_key "reviews", "movies"
end end

@ -0,0 +1,7 @@
require "test_helper"
class FavoritesControllerTest < ActionDispatch::IntegrationTest
# test "the truth" do
# assert true
# end
end

@ -0,0 +1,9 @@
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
one:
movie: one
user: one
two:
movie: two
user: two

@ -0,0 +1,7 @@
require "test_helper"
class FavoriteTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end
Loading…
Cancel
Save