Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails my sessions\u控制器中的某些数据管理代码出现问题_Ruby On Rails - Fatal编程技术网

Ruby on rails my sessions\u控制器中的某些数据管理代码出现问题

Ruby on rails my sessions\u控制器中的某些数据管理代码出现问题,ruby-on-rails,Ruby On Rails,一个用户可能属于多个组。 用户可以对每个组进行审查。 用户已从组中删除,但未删除评论。这会导致错误。 当用户登录时,我想删除他们不再属于的组的用户评论。 以下是不起作用的代码: @user = session[:user] @group = session[:group] @urevs = UserReview.find(:all, :conditions => ["user_id = ?", @user.id]) unless @urevs.nil? @urevs.each d

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

@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查询来删除所有这样的实例

谢谢

@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