我的sessions_controller中的一些数据管理代码出现问题

时间:2011-02-02 10:41:37

标签: ruby-on-rails

用户可能属于多个群组 用户可以对每个组进行审核 用户已从群组中删除而不删除评论。这会导致错误 当用户登录时,我想删除他们不再属于的组的用户评论。 这是不起作用的代码:

@user  = session[:user]
@group = session[:group]
@urevs = UserReview.find(:all, :conditions => ["user_id = ?", @user.id])
unless @urevs.nil?
    @urevs.each do |r|
        ur  = @urevs.id
        @rv = Review.find(:first, :conditions => ["id = ?", @urevs.review_id])
        @gm = GroupMember.find(:first, :conditions => ["group_id = ? and user_id = ?", @rv.group_id, @user.id])
        if @gm.nil?
            @dest = UserReview.find(:first, :conditions => ["id = ?", ur])
            @dest.destroy
        end
    end
end

我不想做mysql查询来删除所有这样的实例。

感谢。

1 个答案:

答案 0 :(得分:1)

@user.user_reviews.destroy_all(["user_reviews.group_id NOT IN (?)", GroupMember.where(:user_id => @user.id).all.map(&:group_id)])

如果您有这样的方法

,可以用更方便的方法@user.groups.map(&:id)替换此部分
GroupMember.where(:user_id => @user.id).all.map(&:group_id)

如果您不需要在记录后进行清理,也可以随destroy_all替换delete_all