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(您说您已添加)的列。添加此关联后,您可以引用a已通过该方法(即)User提交的所有资源。User#submitted_resources@user.submitted_resources.count

我还将belongs_to :submitter, class_name: "User"关联添加到您的Resource模型中,这样可以轻松引用User创建记录的关联,但不必完成您的要求。

于 2012-07-04T16:29:27.090 回答