アクティブになる!レコード



アクティブレコードは、簡単に作成、維持、データベースを操作することができますルビー宝石です.これはORM(Object Relational Mapping)で、データベース内のデータと対話することができます.
たとえば、犬のデータベースを持っている場合は、アクティブなレコードを使用してすべての犬を簡単につかむことができます.
Dog.all

. . .


アクティブレコードの基礎


  • 命名規則
  • あなたのクラスに関連するデータベース表を多重化します.クラス名は、Camelcaseで最初に書かれて、書かれて、書かれて、特異です.テーブル名は複数、すべて小文字で、SnakeRankの場合に書き込まれます.
  • Model Class - Dog
    Database Table - dogs
    

  • アクティブレコードモデル
  • サブクラスActiveRecordクラス.これにより、サブクラス内のすべてのメソッドを継承できます.
  • class Dog < ActiveRecord::Base
    end
    

  • 砕く
  • アクティブレコードはオブジェクトを作成し、新しいインスタンスを作成するのではなくデータベースに保存します.
  • roscoe = Dog.create(name: "Roscoe", breed: "Mix")
    

  • ぞっとする
  • データベース内のデータにアクセスします.他の読み出し方法はhereである.
  • Dog.all
    # Returns all our dogs
    
    Dog.first
    # Returns the first dog
    
    Dog.find_by(name: "Roscoe")
    # Returns the first dog named Roscoe
    
    Dog.where(breed: "Mix")
    # Returns all dogs with a breed of "Mix"
    

  • 砕く
  • 属性を変更してデータベースに保存します.
  • albert = Dog.find_by(name: "Albert")
    albert.update(name: "Alby")
    
    # Bulk update
    Dog.update_all "adopted = True"
    

  • 削除する
  • データベースからオブジェクトを削除します.
  • alby = Dog.find_by(name: "Alby")
    alby.destroy
    

  • 移動
  • データベースの構造を変更する方法.これは移行ファイルに格納され、rakeを使用して実行されます.
  • class CreateDogs < ActiveRecord::Migration[6.0]
      def change
        create_table :dogs do |t|
          t.string :name
          t.string :breed
          t.boolean :adopted
        end
      end
    end
    

    . . .


    アクティブレコード


  • 関連
  • モデル間の接続を設定します.

  • BooksSenseは、宣言しているクラス(dog)の各インスタンスを他のクラス(所有者)のインスタンスに接続します.

  • 多くの多くは接続に対する所有物の反対側にあります、そして、宣言しているクラス(所有者)には他のクラス(犬)の0以上のインスタンス接続があります.
  • class Dog < ActiveRecord::Base
      belongs_to :owner
    end
    
    class Owner < ActiveRecord::Base
      has_many :dogs
    end
    

  • プラック
  • あなたが提供する属性の配列を返します.
  • Dog.pluck(:name)
    # => ["Roscoe", "Alby", "Fido"]
    

  • 接合
  • 問い合わせテーブルからのデータに基づいて1つのモデルを照会します.関連付けの方法の参照
  • Owner.joins(:dogs)
    

  • スコープ
  • カスタムクエリを返します.コードを複製する必要がないように、他の場所で使用するカスタムクエリを使用する場合はスコープを使用します.
  • class Dog < ActiveRecord::Base
      scope :mix_breed, -> { where("breed = Mix") }
    end
    

    リレーションシップ . . .


    結論


    これは、アクティブな記録ができることのほんの小さなサンプルでした.あなたがより学びたいならば、私は下記のいくつかの関連を提供します.ハッピーコーディング!

    . . .


    資源



    Active Record Basics
    Active Record Associations
    Active Record Query
    Active Record Migrations