Complete Lesson 38 Part 1
This commit is contained in:
parent
38e5234b64
commit
5a1ee09fd3
2
app/controllers/genres_controller.rb
Normal file
2
app/controllers/genres_controller.rb
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
class GenresController < ApplicationController
|
||||||
|
end
|
2
app/helpers/genres_helper.rb
Normal file
2
app/helpers/genres_helper.rb
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
module GenresHelper
|
||||||
|
end
|
4
app/models/characterization.rb
Normal file
4
app/models/characterization.rb
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
class Characterization < ApplicationRecord
|
||||||
|
belongs_to :movie
|
||||||
|
belongs_to :genre
|
||||||
|
end
|
6
app/models/genre.rb
Normal file
6
app/models/genre.rb
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
class Genre < ApplicationRecord
|
||||||
|
validates :name, presence: true, uniqueness: true
|
||||||
|
|
||||||
|
has_many :characterizations, dependent: :destroy
|
||||||
|
has_many :movies, through: :characterizations
|
||||||
|
end
|
@ -12,6 +12,8 @@ class Movie < ApplicationRecord
|
|||||||
has_many :reviews, dependent: :destroy
|
has_many :reviews, dependent: :destroy
|
||||||
has_many :favorites, dependent: :destroy
|
has_many :favorites, dependent: :destroy
|
||||||
has_many :fans, through: :favorites, source: :user
|
has_many :fans, through: :favorites, source: :user
|
||||||
|
has_many :characterizations, dependent: :destroy
|
||||||
|
has_many :genres, through: :characterizations
|
||||||
|
|
||||||
def flop?
|
def flop?
|
||||||
total_gross.blank? || total_gross < 225_000_000
|
total_gross.blank? || total_gross < 225_000_000
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
|
resources :genres
|
||||||
resource :session, only: [:new, :create, :destroy]
|
resource :session, only: [:new, :create, :destroy]
|
||||||
resources :users
|
resources :users
|
||||||
resources :reviews
|
resources :reviews
|
||||||
|
9
db/migrate/20230927130352_create_genres.rb
Normal file
9
db/migrate/20230927130352_create_genres.rb
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
class CreateGenres < ActiveRecord::Migration[7.0]
|
||||||
|
def change
|
||||||
|
create_table :genres do |t|
|
||||||
|
t.string :name
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
10
db/migrate/20230927130526_create_characterizations.rb
Normal file
10
db/migrate/20230927130526_create_characterizations.rb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
class CreateCharacterizations < ActiveRecord::Migration[7.0]
|
||||||
|
def change
|
||||||
|
create_table :characterizations do |t|
|
||||||
|
t.references :movie, null: false, foreign_key: true
|
||||||
|
t.references :genre, null: false, foreign_key: true
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
19
db/schema.rb
generated
19
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_123732) do
|
ActiveRecord::Schema[7.0].define(version: 2023_09_27_130526) do
|
||||||
|
create_table "characterizations", force: :cascade do |t|
|
||||||
|
t.integer "movie_id", null: false
|
||||||
|
t.integer "genre_id", null: false
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
t.index ["genre_id"], name: "index_characterizations_on_genre_id"
|
||||||
|
t.index ["movie_id"], name: "index_characterizations_on_movie_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "favorites", force: :cascade do |t|
|
create_table "favorites", force: :cascade do |t|
|
||||||
t.integer "movie_id", null: false
|
t.integer "movie_id", null: false
|
||||||
t.integer "user_id", null: false
|
t.integer "user_id", null: false
|
||||||
@ -20,6 +29,12 @@ ActiveRecord::Schema[7.0].define(version: 2023_09_27_123732) do
|
|||||||
t.index ["user_id"], name: "index_favorites_on_user_id"
|
t.index ["user_id"], name: "index_favorites_on_user_id"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "genres", force: :cascade do |t|
|
||||||
|
t.string "name"
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
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"
|
||||||
@ -52,6 +67,8 @@ ActiveRecord::Schema[7.0].define(version: 2023_09_27_123732) do
|
|||||||
t.boolean "admin", default: false
|
t.boolean "admin", default: false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_foreign_key "characterizations", "genres"
|
||||||
|
add_foreign_key "characterizations", "movies"
|
||||||
add_foreign_key "favorites", "movies"
|
add_foreign_key "favorites", "movies"
|
||||||
add_foreign_key "favorites", "users"
|
add_foreign_key "favorites", "users"
|
||||||
add_foreign_key "reviews", "movies"
|
add_foreign_key "reviews", "movies"
|
||||||
|
7
test/controllers/genres_controller_test.rb
Normal file
7
test/controllers/genres_controller_test.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
class GenresControllerTest < ActionDispatch::IntegrationTest
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
9
test/fixtures/characterizations.yml
vendored
Normal file
9
test/fixtures/characterizations.yml
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||||
|
|
||||||
|
one:
|
||||||
|
movie: one
|
||||||
|
genre: one
|
||||||
|
|
||||||
|
two:
|
||||||
|
movie: two
|
||||||
|
genre: two
|
7
test/fixtures/genres.yml
vendored
Normal file
7
test/fixtures/genres.yml
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
|
||||||
|
|
||||||
|
one:
|
||||||
|
name: MyString
|
||||||
|
|
||||||
|
two:
|
||||||
|
name: MyString
|
7
test/models/characterization_test.rb
Normal file
7
test/models/characterization_test.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
class CharacterizationTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
7
test/models/genre_test.rb
Normal file
7
test/models/genre_test.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
class GenreTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user