Ruby on rails 4 模型具有多个关系的命名约定

Ruby on rails 4 模型具有多个关系的命名约定,ruby-on-rails-4,Ruby On Rails 4,我有三个模型——用户、书籍和贡献 每个@book都有一个标题和一个作者(拥有该实例) 或者,每个@book可以有多个贡献者 作者和贡献者来自同一类用户 编写模型关系的最佳方法是什么?我的直觉是 User :name Book :title :user_id Contribution :book_id :user_id users.rb- has_many :books has_many :books, through :contribution has_many :books has_

我有三个模型——用户、书籍和贡献

每个@book都有一个标题和一个作者(拥有该实例)

或者,每个@book可以有多个贡献者

作者和贡献者来自同一类用户

编写模型关系的最佳方法是什么?我的直觉是

User  :name
Book  :title :user_id
Contribution  :book_id :user_id
users.rb-

has_many :books
has_many :books, through :contribution
has_many :books
has_many :contributions
books.rb-

belongs_to :user
has_many :users, through :contribution
belongs_to :user
has_many :contributions
捐款.rb-

belongs_to :user
belongs_to :book
belongs_to :user
belongs_to :book

……但这似乎是自找麻烦。是否有一种处理具有多个关系的模型的最佳实践方法?

对我有效的方法是:

users.rb-

has_many :books
has_many :books, through :contribution
has_many :books
has_many :contributions
books.rb-

belongs_to :user
has_many :users, through :contribution
belongs_to :user
has_many :contributions
捐款.rb-

belongs_to :user
belongs_to :book
belongs_to :user
belongs_to :book
  • 给我的教训是:不要想得太多

我不知道您的站点的全部需求是什么,但它可以更简单,只需将contributor作为books模型的一个属性即可。书籍只会有一系列贡献者,就像它有名字和作者一样


如果你对贡献者有更复杂的想法,那么也许让它成为自己的模型是一种方法

我没有完全理解这些数据。什么是“贡献”?这是书的另一个属性吗?例如,John Smith撰写的第1本书,由Jane Smith撰稿。我希望能够大量搜索稿件-将稿件类型设置为书本模型上的数组会对数据库产生影响吗?如果有大量的稿件和大量的关联,可能会更干净,你应该做它自己的模型。