1

我的問題與命名約定更相關,而不是我認爲的編程。與同一模型有兩種關係時的Rails命名約定

讓我們假設一個應用程序,用戶可以創建新的文章(所以他們這些物品的所有人),並在那裏你可以添加文章「編輯」,誰只能更新文章內容。

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個聯繫?

回答

3

我會稱他們爲:edited_articles,:authored_articles:owned_articles,或類似的直接名稱。只是不要忘記添加:class_name:foreign_key:through限定符給他們。

更新:對於has_and_belongs_to_many關係,你需要一個連接表,這是默認

,被命名爲兩個連接表中。例如。 articles_users你的情況。在這個表格中,您將有兩個ID,user_idarticle_id。這種方式軌道自動連接您的模型。

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

當然,如果你在連接表中調用它editor_id然後使用它。相反,在用戶方面也應該工作。

+1

因此,像'has_and_belongs_to_many:edited_articles,:CLASS_NAME => '文章',:foreign_key =>「editor_id''? – 2012-04-25 12:52:54