1

ユーザーとテーマの 2 つのモデルがあり、現在、themes_users テーブルの HABTM アソシエーションに参加しています。基本的に、ユーザーが新しいテーマを作成すると、他のユーザーが自分で使用するために選択できるようになります。

ただし、テーマを編集できるのは、テーマの元の作成者のみです。したがって、その関係を処理するには、テーマの created_by_id フィールドのような別の種類の関連付けが必要です。

このように、ユーザー モデルは 2 つの異なるロールとして機能します。テーマの実装者および/またはテーマの所有者になることができます。実装者の関係は、themes_users 結合テーブルによって処理されます。問題は次のとおりです。この二次的な関連付けを処理する正しい方法は何ですか? ユーザーをポリモーフィックにしてから、created_by_id が「所有者」を参照するようにする必要がありますか? それとももっと簡単なものがありますか?

助けてくれてどうもありがとう!

4

1 に答える 1

1

次の関連付けを追加する必要があると思います

class User < ApplicationController
   # a user can create many themes
   has_many :themes_created, :foreign_key => :creator_id, :class_name => "Theme"
end

class Theme < ApplicationController
   # add a creator_id column in your themes table
   belongs_to :creator, :class_name => "User"
end

themesこのようにして、一部の人が作成したすべてを取得でき@userます

@user.themes_created
于 2010-06-11T20:25:52.180 に答える