以下是我的模特:
**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
答案 0 :(得分: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
的列(您说已添加)。添加此关联后,您可以使用User
方法(即User#submitted_resources
)引用@user.submitted_resources.count
提交的所有资源。
我还在belongs_to :submitter, class_name: "User"
模型中添加了Resource
关联,这样可以轻松引用创建记录的User
,但没有必要完成您的要求。