Ruby 面试题
目录

Ruby on Rails 中如何定义模型 (Model) 之间的关系?

· 约 3 分钟读完 · 第 149 / 199 章

推荐答案

在 Ruby on Rails 中,模型之间的关系可以通过 ActiveRecord 提供的关联宏来定义。以下是一些常见的关联类型及其定义方式:

1. 一对一关系 (One-to-One)

2. 一对多关系 (One-to-Many)

3. 多对多关系 (Many-to-Many)

4. 多态关联 (Polymorphic Associations)

本题详细解读

1. 一对一关系 (One-to-One)

  • has_one 和 belongs_to 用于定义一对一关系。
  • has_one 表示一个模型实例拥有另一个模型实例。
  • belongs_to 表示一个模型实例属于另一个模型实例。

2. 一对多关系 (One-to-Many)

  • has_many 和 belongs_to 用于定义一对多关系。
  • has_many 表示一个模型实例拥有多个另一个模型实例。
  • belongs_to 表示一个模型实例属于另一个模型实例。

3. 多对多关系 (Many-to-Many)

  • has_many :through 用于定义多对多关系。
  • 需要一个中间表(如 enrollments)来连接两个模型。
  • has_many :through 允许通过中间表访问关联的模型实例。

4. 多态关联 (Polymorphic Associations)

  • polymorphic: true 用于定义多态关联。
  • 允许一个模型实例属于多个其他模型实例。
  • 常用于评论、点赞等场景,其中评论可以属于不同的模型(如 Post 或 Photo)。