【发布时间】:2016-01-12 10:31:54
【问题描述】:
我有:
user.rb
has_and_belongs_to_many :groups
has_and_belongs_to_many :posts
group.rb
has_and_belongs_to_many :users
has_many :posts, dependent: :destroy
post.rb
belongs_to :group
has_and_belongs_to_many :users
当用户点击“删除组”时,应用删除组和用户之间的关联,如果没有其他人使用该组,则销毁它:
def destroy
@group = Group.find(params[:id])
remove_group_from_user(@group)
if @group.users(true).empty?
@group.destroy
end
end
def remove_group_from_user(group)
user = current_user.id
if user
group.users.delete(user)
end
end
但用户在该组中有关联的帖子。删除组-用户关联后,我需要删除用户和组帖子之间的所有关联。
类似:
group.posts.users.delete(current_user.id)
如何做到这一点?
更新 这里有一些东西,它有效,但我一点也不喜欢它。怎么变漂亮?
def remove_group_from_user(group)
user = current_user.id
if user
group.users.delete(user)
current_user.posts.where(group_id: group.id).
each do |post| #from here
post.users.delete(user)
if post.users(true).empty?
post.destroy
end
end
end
end
【问题讨论】:
标签: ruby-on-rails associations