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

私が知りたいのは、User モデルで記事の関連付けを呼び出す方法です。つまり、記事には著者と編集者がいて、これは私には強い命名規則のように思えますが、ユーザーには彼が作成した記事と彼が編集者である記事があります。最後の 2 つの関連付けをどのように呼び出し、名前を付け、宣言しますか?

4

1 に答える 1

3

私はそれらを:edited_articles、 、:authored_articlesまたは:owned_articles、または同様に単純な名前と呼びます。:class_nameand:foreign_keyまたは:through修飾子を追加することを忘れないでください。

アップデート:

has_and_belongs_to_many リレーションの場合、接続テーブルが必要です。デフォルトでは、2 つの結合テーブルの名前が付けられています。たとえばarticles_users、あなたの場合。この表には、おそらく と の 2 つの ID がuser_idありarticle_idます。このようにして、Rails はモデルを自動的に接続します。

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

editor_idもちろん、結合テーブルで呼び出す場合は、それを使用します。逆に、ユーザー側でも機能するはずです。

于 2012-04-25T12:40:48.907 に答える