読者です 読者をやめる 読者になる 読者になる

Railsガイドメモ3

programming

今日は第2章から。


第2章 Active Record の基礎

  • Active Record にはさまざまな機能が搭載されており、その中でも以下のものが特に重 要です。

    • モデルおよびモデル内のデータを表現する
    • モデル間の関連付け (アソシエーション) を表現する
    • 関連するモデルを介した継承階層を表現する
    • データがデータベースに永続的に保存される前に検証 (validation) を行なう
    • オブジェクト指向の表記方法でデータベースを操作する
  • Rails では、データベースのテーブル名を見つけるとき に、モデルのクラス名を複数形にしたものを使用します。つまり、Book というモデルク ラスがある場合、これに対応するデータベースのテーブルは複数形の books になります。

    • モデルのクラス名が 2 語以上の複合語 である場合、Ruby の慣習であるキャメルケース (CamelCase のように語頭を大文字に してスペースなしでつなぐ) に従ってください。

    • 外部キー - このカラムは テーブル名の単数形_id にする必要があります (例 item_id、order_id)

    • 主キー - デフォルトでは id という名前を持つ integer のカラムをテーブルの主 キーとして使用します。

  • たとえば、User というモデルに name と occupation という属性があるとすると、 create メソッドを実行すると新しいレコードが 1 つ作成され、データベースに保存され ます。

user = User.create(name: "David", occupation: "Code␣Artist")
  • new メソッドを使用した場合は、オブジェクトは保存されずにインスタンス化されます。

  • create や new にブロックが渡されると、新しいオブジェクトは初期化のため にブロックに渡されます。

user = User.new do |u|
  u.name = "David" u.occupation = "Code␣Artist"
end
  • 複数のレコードを 一度に更新したいのであれば、update_all というクラスメソッドが便利です。
User.update_all "max_login_attempts␣=␣3,␣must_change_password␣=␣'true'"
  • create、save、 update メソッドは、検証に失敗した場合に false を返します。このとき実際のデー タベース操作は行われません。

  • 2.8 マイグレーション

  • 3.3.7 ヘルパーの機能だけでは足りない場合 Active Record が提供するヘルパーの機能だけでは不十分な場合、execute メソッド を使用して任意の SQL を実行できます。 Product.connection.execute(‘UPDATE␣products␣SET␣price=free␣WHERE␣1’) 個別のメソッドの詳細については、API ドキュメントを確認してください。特に、

    • ActiveRecord::ConnectionAdapters::SchemaStatements (change、up、down メソッ ドで利用可能なメソッドを提供)
    • ActiveRecord::ConnectionAdapters::TableDefinition (create_table で生成されるオブジェクトで使用可能なメソッドを提供)、および
    • ActiveRecord::ConnectionAdapters::Table (change_table で生成されるオブジェクトで 使用可能なメソッドを提供) を参照ください。

今日はここまで