1. 参照テーブルの情報アクセス — belongs_to アソシエーション
- あるモデルが他のモデルに依存している関係を定義する際に使用されます。
- 主に外部キー(foreign key)を持つモデルで使用されます。
belongs_toを通じてデータベースの参照整合性を容易に維持できます。
1) 基本概念
belongs_to アソシエーションはあるエンティティが別のエンティティに属している関係を示します。
- 例えば、ブログシステムで各コメント(Comment)は一つの投稿(Post)に属していると仮定します。
- この場合、
Comment モデルは Post モデルに belongs_to の関係があります。
- この関係は
Comment テーブルに post_id という外部キーを含みます。
- この外部キーは
Comment が参照する Post の主キー(primary key)に対応しています。
2) 使用方法
belongs_to 関係を設定するには、依存するモデル内に belongs_to キーワードを使用します。
class Comment < ApplicationRecord
belongs_to :post
end
- この宣言により
Comment モデルは Post モデルと連携されます。
- この連携のおかげで、
Comment インスタンスは .post メソッドを通じて関連する Post オブジェクトに容易にアクセスできます。
- 例えば、特定のコメントに関連する投稿のタイトルを取得するときに以下のように記述します。
@comment = Comment.find(1)
@post_title = @comment.post.title
3) 注意点及び活用
belongs_to 関係は基本的に必須の関係と見なされます。
=> つまり、外部キー値が必ず存在する必要があります。
外部キーをオプションとして設定したい場合は、optional: true オプションを使用する必要があります。
belongs_to 関係には様々なオプションを追加できます。
- 例えば、
class_name、foreign_key、primary_key、counter_cache などのオプションを通じて関係をより柔軟に設定可能です。
- この設定により、
Comment は必ずしも Post に属する必要はなく、データベースに post_id が nil になることがあります。
class Comment < ApplicationRecord
belongs_to :post, optional: true
end