我的问题更多地与命名约定相关,而不是编程。
我们假设一个应用程序,用户可以在其中创建新文章(因此他们是这些文章的所有者),并且您可以在其中添加文章“编辑者”,他们只能更新文章内容。
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
我想知道的是我应该如何在我的用户模型中调用文章关联。我的意思是,一篇文章有一个作者和编辑,这对我来说似乎是强有力的命名惯例,但是用户有他创建的文章和文章他是编辑。你会如何调用/命名/声明最后2个关联?
答案 0 :(得分:3)
我会将其称为:edited_articles
,:authored_articles
或:owned_articles
,或类似的直接名称。不要忘记向他们添加:class_name
和:foreign_key
或:through
限定符。
更新
对于has_and_belongs_to_many关系,您需要一个连接表,默认情况下,该连接表是两个连接表的名称。例如。在你的情况下articles_users
。在此表格中,您可能会有两个ID user_id
和article_id
。这样rails就会自动连接你的模型。
has_and_belongs_to_many :editors, :class_name => 'User', :foreign_id => 'user_id'
当然,如果你在连接表中调用它editor_id
,那么就使用它。相反,在用户方面也应该工作。