Rails로 기본 정보 기술자 시험의 과거 문제 사이트를 만든다(1:구축편)

소개



유루~쿠 배운다. 모두의 웹 공부 커뮤니티. "뉴~부루회"를 운용중입니다.
h tps : // 네 w 부루. 기주 b. 이오/

거기서, 뭔가 교육용의 컨텐츠를 갖고 싶어~라고 생각하고, 이번 기획을 스타트했습니다!

Rails에서 기본 정보 기술자 시험의 과거 문제 사이트를 만듭니다!

최종 목표


  • 문제 및 답변 등록은 Scaffold에서 간단하고 OK
  • API를 준비하고 무작위로 문제를 추출하는 기능을 추가합니다
  • TwitterBOT, LINEBOT, SlackBOT이 가능하면 좋을 것입니다

  • 히스토리



    1: 구축편
     본 페이지
    2:일본어화(i18n)편
    htps : // 이 m/네 w부루/있어 ms/4f12fdb61bf6cd601545
    3:부모와 자식 관계, 등록편
    htps : // 코 m / 네 w 부루 / 있어 ms / f2 아 20289
    4:부모와 자식 관계, 참조편
    h tps:// 퀵했다. 작은 m / 네 w 불 / MS / 51b11BD02691 그림 FC2 c0d
    5: API편
    htps : // 코 m / 네 w 부루 / 있어 ms / 89f9f847 아 2648 bd d006c
    6:SlackBOT편
    htps : // 이 m / 네 w 부루 / 있어 ms / 감히 b9 아 cb453이다 786bd59
    7 : Heroku 배포 ~ 자동화 편
    htps : // 코 m / 네 w 부루 / 있어 ms / 0 아 8 b02 에 1 8 c8 737 c7

    이번에 할 일


  • DB 만들기
  • 문제에 대한 마스터 등록 화면 만들기
  • 답변을위한 마스터 등록 화면 만들기

  • 모델(DB) 생각



    Rails에서 웹 사이트를 만들기 때문에 먼저 모델 (DB)의 구성을 생각해 봅시다.

    문제를 표시하는 사이트이므로 필요한 모델은 다음과 같습니다.

    문제 모델(Questions)


    이름
    물리적 이름
    금형
    비고


    카테고리 1
    category1
    문자열(string)
    몇년도?

    카테고리 2
    category2
    문자열(string)
    봄이나 가을입니까?

    카테고리 3
    category3
    문자열(string)
    무엇 질문인가?

    문제문
    msg
    문자열(text)
    문제문 등록


    ※다른 시험의 과거문도 등록할 수 있도록, 「카테고리」라고 하는 분류로 나누기로 합니다.

    카테고리 1 ~ 3이라는 이상한 구성이되어 버리고 있습니다 만 ...
    IPA의 과거문이용규약에 따라 출전을 기재할 필요가 있기 때문에 이와 같은 구성으로 되어 있습니다.
    이해해 주십시오.


    답변 모델 (Answers)


    이름
    물리적 이름
    금형
    비고


    문제 ID
    question_id
    참조
    어떤 문제에 대한 답변을 연결

    답변
    msg
    문자열(string)
    답변 등록

    정오 플래그
    correct
    YES/NO(boolean)
    정답의 경우는 true(1)


    그럼 만들어 봅시다.



    rails new를 사용하여 애플리케이션을 작성합니다.
    ※어플리케이션명은 「quiz」로 합니다.

    rails-new
    rails new quiz -d mysql
    

    ※MySQL파이므로, DB를 지정하고 있습니다만, 자유롭게 변경해 주세요.
    하지만, 본고에서는 MySQL을 사용해 설명해 갑니다. 양해 바랍니다.

    다음으로 DB 만들기

    DB 만들기
    $ rake db:create
    Created database 'quiz_development'
    Created database 'quiz_test'
    

    여기까지는 항상 그렇습니다.

    브라우저에서 움직이는지 확인

    rails-server
    $ rails s
    

    아시다시피, 다음 화면이 나오면 OK입니다!


    슬림 적용



    개발을 효율적으로 하기 위해 템플릿 엔진을 erb에서 slim으로 변경합니다.
    ※ erb 그대로가 좋은 사람이나 Haml파 분은 날려 주시면 상관 없습니다.
    하지만, 본고에서는 slim을 사용해 설명해 갑니다. 양해 바랍니다.

    Gemfile에 추가하여 bundle install

    ./Gemfile
    gem 'slim-rails'
    

    bundle-install
    $ bundle install
    

    기본 템플릿 엔진을 slim으로 변경합니다.

    config/application.rb
    class Application < Rails::Application
      config.generators.template_engine = :slim
    end
    

    Scaffold에서 뼈대를 만들어 봅시다.



    Scaffold를 사용하여 바삭바삭하게 만드세요!

    Scaffold
    例) rails g[enerate] scaffold モデル名 カラム名1:データ型1 カラム名2:データ型2 …
    $ rails g scaffold Question category1:string category2:string category3:string msg:text
    $ rails g scaffold Answer question:references msg:text correct:boolean
    

    DB 생성
    $ rake db:migrate
    

    그럼 확인하겠습니다.



    rails-server
    $ rails s
    

    시작하고 http://localhost:3000/questions/ 에 액세스합니다.

    문제 일람 화면은 이런 느낌으로.


    신규 작성 화면은, 이런 느낌이군요.


    이번에는 여기까지



    고마워요!
    다음 번은 일본어화(i18n)해 갈까.

    좋은 웹페이지 즐겨찾기