2

これが私のモデルです:

**Resource**
has_many :users, :through => :kits
has_many :kits

**User**
has_many :resources, :through => :kits
has_many :kits

**Kits**
belongs_to :resource
belongs_to :user

アプリケーションのユーザーは、キットをクリックしてリソースをキットに追加できます。次に、次のようにして、ユーザーがどのリソースを持っているかを確認できます。

@user.resources

これで、ユーザーは承認のためにリソースを送信することもできます。どのユーザーがどのリソースを送信したかを追跡したい。次のことができるようにするには、どうすればよいですか。

リソースコントローラー

def create
current_user.resources.create(params[:resource])
end

私は次のようなことができるようになりたいです:

@user.submitted_resources.count
4

1 に答える 1

1

次の関連付け(および必要なテーブル、列など)を持つ特定のモデル:

**Resource**
has_many :users, :through => :kits
has_many :kits
belongs_to :submitter, class_name: "User"

**User**
has_many :resources, :through => :kits
has_many :kits
has_many :submitted_resources, class_name: "Resource", foreign_key: "submitter_id"

**Kits**
belongs_to :resource
belongs_to :user

モデルに追加されていることに注意してhas_many :submitted_resources, class_name: "Resource", foreign_key: "submitter_id"くださいUser。これは、 (追加したと言った)Resourcesという名前のテーブルに列があることを前提としています。この関連付けを追加した後、メソッドで送信されsubmitter_idたすべてのリソースを参照できます(つまり)。UserUser#submitted_resources@user.submitted_resources.count

belongs_to :submitter, class_name: "User"また、モデルに関連付けを追加しましたResource。これにより、レコードを作成したを簡単に参照できますが、User要求したことを実行する必要はありません。

于 2012-07-04T16:29:27.090 に答える