
AI
使用has_many通过附加属性建立了一对多的关联,这是在RAIls中非常强大和常用的功能之一。这种关联允许一个模型对象拥有多个关联模型对象,并且可以为这些关联模型对象添加额外的属性,以满足特定的业务需求。
Author和Book,一个作者可以拥有多本书,同时每本书都可以记录它被写作的年份。Rubyclass Author < ApplicationRecord</p> has_many :booksendclass Book < ApplicationRecord</p> belongs_to :authorend添加附加属性要为关联模型对象添加附加属性,我们需要在关联的中间模型中创建一个关联模型。在这个例子中,我们将创建一个名为
Authorship的模型,用于记录作者与书籍之间的关系以及额外的属性,比如写作年份:Rubyclass Authorship < ApplicationRecord</p> belongs_to :author belongs_to :book # 添加附加属性 attribute :writing_year, :integerend建立关联并添加附加属性接下来,我们可以在控制器或RAIls控制台中创建作者、书籍以及它们之间的关系,同时也可以添加附加属性:
Ruby# 创建作者author = Author.create(name: "J.K. Rowling")# 创建书籍book = Book.create(title: "Harry Potter and the Philosopher's Stone")# 建立关联并添加附加属性authorship = Authorship.create(author: author, book: book, writing_year: 1997)查找带有附加属性的关联对象通过这种设置,我们可以轻松地查找带有附加属性的关联对象:
Ruby# 查找某本书的作者和写作年份book = Book.find_by(title: "Harry Potter and the Philosopher's Stone")authorship = book.authorshipauthor = authorship.authorwriting_year = authorship.writing_year通过使用
has_many通过附加属性,我们可以在RAIls应用程序中有效地建立一对多的关联,并为这些关联模型对象添加额外的属性,以满足特定的业务需求。这为我们提供了一个强大的工具,用于处理各种复杂的关系和业务逻辑。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号