더 레일즈 롤러코스터

Rails는 너무 복잡해서 구조에 대해 생각하는 데 혼자 하루가 걸렸습니다. 기초가 탄탄하지 않은 좋은 롤러코스터란? 내 데이터베이스, 시드 데이터 및 모델 자체 사이에서 이것이 쉽지 않을 것이라는 것을 알았습니다. 도전: 어떤 경로를 택할지 결정하기(말장난이 아님). 내 초기 생각은 관계가 있는 모든 경로를 중첩시키는 것이었습니다. 예를 들어:

schema.rb

create_table "bets", force: :cascade do |t|
    t.boolean "placed"
    t.datetime "time"
    t.integer "odds"
    t.integer "event_id"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

  create_table "betslips", force: :cascade do |t|
    t.boolean "placed"
    t.integer "amount"
    t.string "status"
    t.integer "bet_id"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

  create_table "events", force: :cascade do |t|
    t.string "name"
    t.datetime "time"
    t.integer "league_id"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

  create_table "leagues", force: :cascade do |t|
    t.string "name"
    t.integer "sport_id"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

  create_table "sports", force: :cascade do |t|
    t.string "name"
    t.string "type"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

end




    resources: sports, only: [:index] do 
      resources: leagues, only: [:index] do
        resources: events, only: [:index, :show] do 
          resources: bets, shallow: true do 
            resources: betslip, shallow: true 
          end
        end
      end
    end


보시다시피 이것은 매우 복잡해지고 매우 빠르게 진행될 수 있습니다. 나는 학교 수업을 다시 생각하고 인터넷 검색을했습니다. 일반적인 경험 법칙은 경로가 한 수준 이상 깊어서는 안 된다는 것입니다. 이것은 말이 되었고, 완전한 화장을 할 때였습니다. API 끝점에 연결하여 시작한 다음 데이터베이스, 경로 및 관계를 구성했습니다. 이 규칙을 사용하여 관심사를 분리하고 편안한 라우팅을 훨씬 덜 복잡하게 만들 수 있었습니다. 예를 들어:


  create_table "bets", force: :cascade do |t|
    t.integer "odd_id"
    t.integer "user_id"
    t.integer "amount"
    t.string "team"
    t.integer "odds"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

  create_table "odds", force: :cascade do |t|
    t.integer "sport_id"
    t.string "sport_key"
    t.string "sport_nice"
    t.string "teams"
    t.string "home_team"
    t.datetime "commence_time"
    t.string "site_and_odds"
    t.string "odds"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

  create_table "sports", force: :cascade do |t|
    t.string "key"
    t.boolean "active"
    t.string "group"
    t.string "details"
    t.string "title"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end




  resources :sports, only: [:index] do
    resources :odds, only: [:index]
  end

  resources :odds, only: [:show] do 
    resources :bets, shallow: true
  end


재구성 전에 실행rake routes을 실행하면 실제로 읽을 수 없는 거대한 데이지 체인 경로 헬퍼가 생겼습니다. 화장을 통해 목표를 달성하고 편안한 컨벤션을 계속해서 실천할 수 있었습니다.

사진 제공: Jack Koppa에서 Pixabay에 의해 Pixabay 이미지
Eak K.에서 Pixabay의 이미지

좋은 웹페이지 즐겨찾기