Ruby on rails 结构的最佳方式是通过几个模型来实现的?
我正在建立一个教科书数据库。Ruby on rails 结构的最佳方式是通过几个模型来实现的?,ruby-on-rails,Ruby On Rails,我正在建立一个教科书数据库。书籍的外观如下: 书籍 身份证 头衔 isbn 作者 科目 班级 大学 教授 虽然一本书(显然)只有一个书名或ISBN,但我希望作者、学科、大学和教授成为一种“标签”。一本书可以由多个作者撰写,可以用于由多个教授讲授的多个课程中的多个主题。因此,我想为其中的每一个建立一个多对多的关系。e、 g.作者可能看起来像: 作者 身份证 名字 书 对我来说,书属于作者并不一定有意义,反之亦然(尽管我可能错了)。但我也不知道创建book\u author\u associ
书籍
的外观如下:
书籍
- 身份证
- 头衔
- isbn
- 作者
- 科目
- 班级
- 大学
- 教授
作者
可能看起来像:
作者
- 身份证
- 名字
- 书
book\u author\u associations
表、book\u jubjects\u associations
模型、book\u classes\u associations
模型等等
创建这样的多对多的最佳方法是什么?没有测试,但在理论上应该可行:
Book
has_many :book_associations
has_many :associations, through: :book_associations
BookAssociation
belongs_to :book
belongs_to :association, polymorphic: true
validates :book_id, presence: true
validates :association_id, presence: true
validates :association_type, presence: true
Author
has_many :book_associations, as: :association
has_many :books, through: :book_associations
Subject
has_many :book_associations, as: :association
has_many :books, through: :book_associations
没有测试,但在理论上应该有效:
Book
has_many :book_associations
has_many :associations, through: :book_associations
BookAssociation
belongs_to :book
belongs_to :association, polymorphic: true
validates :book_id, presence: true
validates :association_id, presence: true
validates :association_type, presence: true
Author
has_many :book_associations, as: :association
has_many :books, through: :book_associations
Subject
has_many :book_associations, as: :association
has_many :books, through: :book_associations
在这种情况下,拥有联接表是不可避免的 您应该继续为类、主题、作者等创建单独的表,因为它们具有非常不同的属性。您应该通过连接表将它们与书籍相关联,这些表在大多数情况下都有自己的属性 例如,一本书的贡献者可以是作者,也可以是编辑、摄影师、翻译人员,或者其他任何角色,而该角色将是书籍和作者之间关联的属性(最好称之为贡献者)
有关这类内容的更多信息,您可以查看EDItEUR的Onix代码列表,以了解有关书籍元数据结构的想法 在这种情况下,拥有联接表是不可避免的 您应该继续为类、主题、作者等创建单独的表,因为它们具有非常不同的属性。您应该通过连接表将它们与书籍相关联,这些表在大多数情况下都有自己的属性 例如,一本书的贡献者可以是作者,也可以是编辑、摄影师、翻译人员,或者其他任何角色,而该角色将是书籍和作者之间关联的属性(最好称之为贡献者)
有关这类内容的更多信息,您可以查看EDItEUR的Onix代码列表,以了解有关书籍元数据结构的想法 如果您不想创建联接模型,可以使用
has\u和\u-beliens\u-to\u-many
类型的关联。它们只接受数据库中的联接表,而不接受额外的ActiveRecord模型。更多信息:多态关联?像BookAssociations这样的模型引用了图书id、关联对象id和关联对象类型?如果您不想创建联接模型,可以使用has\u和\u beliens\u many
类型的关联。它们只接受数据库中的联接表,而不接受额外的ActiveRecord模型。更多信息:多态关联?像BookAssociations这样的模型,它引用图书id、关联对象id和关联对象类型?