1

私の質問は、プログラミングよりも命名規則に関連しています。同じモデルに2つの関係があるときの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 

私が知っておきたいのは、私のUserモデルでarticles associationを呼び出す方法です。つまり、記事には著者と編集者がいますが、それは私には強い名前付け規則と思われますが、ユーザーは彼が作成した記事を持っていて、彼は編集者です。最後の2つの団体を/名前/宣言するにはどうしたらいいですか?

答えて

3

私は:edited_articles:authored_articlesまたは:owned_articlesと同様の名前を使用します。 :class_name:foreign_keyまたは:through修飾子を追加することを忘れないでください。

更新:あなたはデフォルトで接続テーブルを、必要has_and_belongs_to_manyアソシエーションの関係について

は、2結合されたテーブルの名前が付けられています。例えば。あなたの場合はarticles_usersです。この表では、ふつうuser_idarticle_idの2つの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''のようなものですか? –

関連する問題