Ruby on Rails[학습기록 - 제3장-]

6874 단어 Rails

모델

  • 모델은 Rails에서 데이터베이스에 접근하는 것을 위주로 하는 정보 교환을 처리하는 부분이다.
  • 실체는 하나의 유형을 정의한 ◯◯이다.rb라는 파일.
  • 컨트롤러는 모델을 사용하여 테이블에서 데이터를 꺼내 보기 파일로 전송한다.
  • 모델은 기본적으로 응용/models 이하의 층에 설정되어 있다.
  • 모델류를 모델류라고 부른다.

  • 그림 출처: 모델 개념
    sample.rb
    class Sample
     def test
     end
    end
    
  • 대응 관계는 표와 모델류의 명칭에 의해 결정된다.
  • 모델 명명 규칙

  • Rails에서 파일과 테이블 등의 명칭은 규칙적인 형식에 따라 진행해야 한다.
  • 명명 규칙은 다음과 같다.
  • 타입
    개요
    이름 예
    모델 클래스 이름
    첫머리 는 대문자, 단수 형식 이다
    App
    모델 클래스 파일 이름
    첫머리 는 소문자, 단수 형식 이다
    app.rb
    테이블 이름
    처음에는 소문자로 여러 모양이 있다
    apps

    모델 파일 생성 명령

  • rails g model 명령을 사용할 때 DB에서 테이블을 만드는 데 사용할 파일과 이 테이블에 대응하는 모델 파일을 자동으로 생성합니다.
  • 생성하려는 모델의 클래스 이름을 모두 소문자로 변경한 후 실행합니다.
  • $ rails g model モデルクラス名(全て小文字) #モデルを作成
    
  • 모델 파일을 잘못 만들었을 때 rails d model 명령을 사용하여 모델 파일을 삭제합니다.
  • $ rails d model モデル名 #作成したモデルを削除
    

    파일 마이그레이션

  • 이전 파일은 표의 설계도입니다.마이그레이션 파일에 어떤 열이 있는지 작성하고 실행을 통해 표를 만듭니다.
  • change 방법으로 만들 열을 지정할 수 있습니다.
  • 열은 Integer,string,text,boolean,데이터 시간 등을 지정할 수 있습니다.
  • class Createテーブル名 < ActiveRecord::Migration[5.2]
      def change
        create_table :テーブル名 do |t|
           t.string      :name
           t.text        :text
           t.text        :image
           t.timestamps null: true
           t.timestamps
        end
      end
    end
    
  • 파일을 마이그레이션하려면 다음 명령을 사용합니다.
  • $ rake db:migrate
    # マイグレーションファイルの実行
    
  • 마이그레이션 파일은 삭제할 수 없습니다.실행 후 이전 파일을 삭제하면schemamigrations와 의견이 엇갈릴 가능성이 있습니다.
  • 읽은migration 파일의 설명이 잘못되어 예상치 못한 이름이나 형식의 표가 나타날 수 있습니다.이 경우 rake db:rollback 명령을 사용합니다.
  • $ rake db:rollback
    # データベースの状態を最新のマイグレーションファイルの実行前に戻す
    

    콘솔에서 레코드 정보 읽기

  • rails c는 "rails constore"(콘솔)의 약자입니다.콘솔을 실행할 때 작성된 Rails 응용 프로그램을 실제로 호출하는 방법 및 클래스 등이 있습니다.
  • $ rails c
    # コンソールの起動
    
    [1] pry(main)>
    
  • 콘솔을 시작할 때 pry로 표시되며 이 옆에 메소드를 쓸 수 있습니다.
  • 입력 종료exit.
  • 테이블과 관련 모델 클래스가 현재 상태에 있으면 컨트롤러에서 실제 코드를 써서 테이블의 정보를 얻을 수 있습니다.
  •  pry(main)> app = App.find(1)
    =><Tweet id:1, text:"こんにちは!", created_at:nil, updated_at:nil, name:"ken", image:nil >
     pry(main)> tweet.name
    =>"ken"allメソッド
    
  • 상기 예에서 사용Appfind방법.
  • find 방법은 앱 클래스가 애플리케이션 레코드와 같은 클래스를 계승했기 때문에 사용할 수 있다.
  • ActiveRecord

  • ActiveRecord(이벤트 레코드)는 루비의 젬의 일종이다.Gem은 모델과 테이블을 연결하여 Rails에서 테이블에 액세스할 수 있는 레코드
  • 를 제공합니다.
  • ActiveRecord는 기본적으로 Rails에 설치됩니다.
  • 실제로 이 기능을 사용할 때 Application Record와 같은 종류를 계승하고 사용한다.
  • all 방법

  • all 방법은 Application Record를 계승하는 모델과 결합된 모든 표 기록을 얻는다.
  • 새로운 방법

  • new 방법을 실행할 때 관련 표의 열 이름을 키로 하는 산열을 생성합니다.모델 클래스의 인스턴스라고 합니다.실례의 키에 값을 대입하고save 방법을 실행한 후 테이블에 저장합니다.
  • [1] pry(main)> tweet = Tweet.new(name: "takashi", text: "Nice to meet you!")
    [2] pry(main)> tweet.save
    

    create 방법


    * new 메서드와 save 메서드를 한 번에 생성하여 처리하는 방법입니다.
    [1] pry(main)> Tweet.create(name: "takashi", text: "Nice to meet you!")
    

    find 메서드


    *find 방법은 매개 변수가 지정한 id에 해당하는 작품 정보만 얻을 수 있습니다.해당 값이 없는 경우 오류가 발생합니다.
    pry(main)> tweet = Tweet.find(1)
    =><Tweet id:1, text:"こんにちは!", created_at:nil, updated_at:nil, name:"ken", image:nil >
    # tweetsテーブルからidが1のレコードを取得し、tweetという変数に代入
    

    save 방법


    * 덮어쓰기를 저장하려면 인스턴스의 save 방법을 사용합니다.
    user = User.find(1)    # Usersテーブルのidが1のレコードを取得
    puts user.name
    => "Shinbo"            # nameカラムの値は"Shinbo"
    user.name = "Abe"  # nameカラムの値を"Abe"に上書き
    user.save              # 変更をデータベースに反映
    puts user.name         
    => "Abe"               # nameカラムの値が"Abe"に更新された
    

    좋은 웹페이지 즐겨찾기