我的应用程序中有多态关联,我希望能够计算组中的用户数,并列出每个组中的用户。我怎样才能做到这一点?
class Group < ApplicationRecord
has_many :user_groups
has_many :users, through: :user_groups
end
class User < ApplicationRecord
has_many :user_groups
has_many :groups, through: :user_groups
end
class UserGroup < ApplicationRecord
belongs_to :user
belongs_to :group
end
我现在可以致电User.first.groups
但是我无法拨打User.groups.all
和User.all.groups
,但这些都不起作用。
答案 0 :(得分:0)
首先,这不是多态关联。仅供参考。
很难知道你在问什么,因为要计算一个群组中的用户,你可以:
group.users.count
当你说'列出'时,你的意思是在视图中吗?那将是这样的:
<%- group.users.each do |user| %>
# do something with user
<% end %>
只是为了扩展评论,如果类Image
具有多态belongs_to
关联,则可能类似于:
# == Schema Information
#
# Table name: images
#
# id :integer not null, primary key
# imageable_id :integer
# imageable_type :string
# created_at :datetime not null
# updated_at :datetime not null
#
class Image < ApplicationRecord
belongs_to :imageable, polymorphic: true
end
如您所见,Image
类的属性为imageable_id
和imageable_type
。然后,如果您希望Document
有多个images
,那么您可能会遇到以下情况:
class Document < ApplicationRecord
has_many :images, as: :imageable
end
然后你可以这样做:
image.imageable
获取image
所属的对象。要获得images
的所有document
,只需:
document.images