Ruby-on-rails-rails-active-records

提供:Dev Guides
移動先:案内検索

Ruby on Rails-アクティブレコード

Rails Active Recordは、Railsで提供されるオブジェクト/リレーショナルマッピング(ORM)レイヤーです。 それは次のとおりである標準ORMモデルに密接に従います-

  • テーブルはクラスにマップし、
  • 行がオブジェクトにマップし、
  • 列はオブジェクト属性にマップされます。

Rails Active Recordsは、リレーショナルデータベース内のテーブルとデータベースレコードを操作するRubyプログラムコードとの間のインターフェイスとバインディングを提供します。 Rubyのメソッド名は、データベーステーブルのフィールド名から自動的に生成されます。

各アクティブレコードオブジェクトには、CRUD([。underline] #C# reate、[。underline] #R# ead、[。underline] #U# pdate、および[。 underline] #D# elete)データベースアクセスのメソッド。 この戦略により、単純な設計と、データベーステーブルとアプリケーションオブジェクト間の単純なマッピングが可能になります。

ドメインモデルのSQLへの変換

Railsに対応したSQLを作成する必要があることを覚えている限り、ドメインモデルをSQLに変換することは一般に簡単です。 実際には、特定のルールに従う必要があります-

  • 各エンティティ(bookなど)は、データベース内でその名前が付けられたテーブルを取得しますが、複数(book)になります。
  • このようなエンティティ一致テーブルにはそれぞれ_id_というフィールドがあり、テーブルに挿入された各レコードの一意の整数が含まれています。
  • エンティティxとエンティティyが与えられ、エンティティyがエンティティxに属する場合、テーブルyにはx_idというフィールドがあります。
  • テーブルのフィールドの大部分は、そのエンティティの単純なプロパティ(数値または文字列)の値を格納します。

アクティブレコードファイル(モデル)の作成

前の章で紹介したライブラリアプリケーションのエンティティのアクティブレコードファイルを作成するには、アプリケーションディレクトリの最上位から次のコマンドを発行します。

library\> rails script/generate model Book
library\> rails script/generate model Subject

上記の* railsはモデルブックを生成します*コマンドは以下のような自動コードを生成します-

ブック生成

ブックとサブジェクトのインスタンスを保存するために、ブックとサブジェクトと呼ばれるモデルを作成するようジェネレーターに指示しています。 BookとSubjectを大文字にし、単数形を使用していることに注意してください。 これは、モデルを作成するたびに従うべきRailsパラダイムです。

生成ツールを使用すると、Railsは、モデルに固有のすべてのメソッドと定義するビジネスルール、テスト駆動開発を実行するためのユニットテストファイル、使用するサンプルデータファイル(フィクスチャと呼ばれる)を保持する実際のモデルファイルを作成します単体テスト、およびデータベースのテーブルと列の作成を容易にするRails移行を使用します。

他の多くのファイルとディレクトリの作成とは別に、これにより* book/rbsおよび subject.rb という名前のファイルが作成され、 app/models ディレクトリにスケルトン定義が含まれます。

book.rbで利用可能なコンテンツ-

class Book < ActiveRecord::Base
end

subject.rbで利用可能なコンテンツ-

class Subject < ActiveRecord::Base
end

モデル間の関連付けの作成

Railsアプリケーションに複数のモデルがある場合、それらのモデル間に接続を作成する必要があります。 これは、関連付けを介して行うことができます。 Active Recordは3種類の関連付けをサポートしています-

  • one-to-one -1つのアイテムに別のアイテムが1つだけある場合、1対1の関係が存在します。 たとえば、人の誕生日は1人だけ、犬の所有者は1人だけです。
  • * 1対多*-1つのオブジェクトが他の多くのオブジェクトのメンバーになることができる場合、1対多の関係が存在します。 たとえば、1つの主題に多数の本を含めることができます。
  • 多対多-最初のオブジェクトが1つ以上の2番目のオブジェクトに関連し、2番目のオブジェクトが1つ以上の最初のオブジェクトに関連している場合、多対多の関係が存在します。

モデルに宣言を追加することで、これらの関連付けを示します:has_one、has_many、belongs_to、およびhas_and_belongs_to_many。

次に、ライブラリデータシステム内で確立する関係をRailsに伝える必要があります。 これを行うには、book.rbとsubject.rbを次のように変更します-

class Book < ActiveRecord::Base
   belongs_to :subject
end

1つのブックが1つのサブジェクトに属することができるため、上記の例では単一のサブジェクトを使用しました。

class Subject < ActiveRecord::Base
   has_many :books
end

1つの主題が複数の本を持つことができるため、ここでは複数の本を使用しました。

モデルの検証の実装

検証の実装はRailsモデルで行われます。 データベースに入力するデータは、実際のRailsモデルで定義されているため、同じ場所で有効なデータが必要とするものを定義することのみが意味をなします。

検証は次のとおりです-

  • titleフィールドの値はNULLであってはなりません。

  • 価格フィールドの値は数値でなければなりません。

    *app \ model* subdiractoryで *book.rb* を開き、次の検証を行います-
class Book < ActiveRecord::Base
   belongs_to :subject
   validates_presence_of :title
   validates_numericality_of :price, :message=>"Error Message"
end
  • validates_presence_of -ユーザー入力の欠落から「NOT NULL」フィールドを保護します。
  • validates_numericality_of -ユーザーが非数値データを入力できないようにします。

上記の検証に加えて、他の一般的な検証があります。 リンクを確認してください:/ruby​​-on-rails/rails-quick-guide [Railsクイックガイド]。

次は何ですか?

次の章では、Rubyを使用してデータベーススキーマの変更を定義し、バージョン管理システムを使用して実際のコードと同期を保つことができるRails移行について学習します。