1

我的问题与命名约定有关,而不是我猜的编程。

让我们假设一个应用程序,用户可以在其中创建新文章(因此他们是这些文章的所有者),并且您可以在其中添加文章“编辑者”,他们只能更新文章内容。

class User
  include Mongoid::Document
  has_many :articles # as owner of the articles
  has_and_belongs_to_many :articles # as editor of the articles
end

class Article
  include Mongoid::Document
  belongs_to :user
  has_and_belongs_to_many :editors, :class_name => 'User'
end

我想知道的是我应该如何在我的用户模型中调用文章关联。我的意思是,一篇文章有​​一个作者和编辑,这对我来说似乎是很强的命名约定,但是一个用户有他创建的文章并且他是编辑。您将如何称呼/命名/声明最后两个关联?

4

1 回答 1

3

我会将它们称为:edited_articles, 和:authored_articlesor :owned_articles,或类似的简单名称。只是不要忘记向它们添加:class_nameand:foreign_key:through限定符。

更新:

对于 has_and_belongs_to_many 关系,您需要一个连接表,默认情况下,它以两个连接表命名。例如articles_users在你的情况下。在此表中,您可能有两个 iduser_idarticle_id. 这样,rails 会自动连接您的模型。

has_and_belongs_to_many :editors, :class_name => 'User', :foreign_id => 'user_id'

当然,如果您editor_id在联接表中调用它,则使用它。相反,在用户端也应该起作用。

于 2012-04-25T12:40:48.907 回答