模型具有多个关系的命名约定

时间:2014-08-21 12:16:55

标签: 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

books.rb -

belongs_to :user
has_many :users, through :contribution

contributions.rb -

belongs_to :user
belongs_to :book

......但这似乎是在寻找麻烦。是否有最佳实践方法来处理具有多个关系的模型?

2 个答案:

答案 0 :(得分:1)

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

如果您为贡献者考虑了更复杂的事情,那么也许可以成为它自己的模型。

答案 1 :(得分:0)

对我有用的是以下内容 -

users.rb -

has_many :books
has_many :contributions

books.rb -

belongs_to :user
has_many :contributions

contributions.rb -

belongs_to :user
belongs_to :book
  • 对我而言:不要过分思考