簡體   English   中英

我的sessions_controller中的一些數據管理代碼有麻煩

[英]trouble with some data management code in my sessions_controller

一個用戶可能屬於幾個組。
用戶可以對每個組進行評論。
用戶已從組中刪除,但未刪除評論。 這會導致錯誤。
當用戶登錄時,我想刪除他們不再屬於的組的用戶評論。 這是不起作用的代碼:

@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)

如果您不需要在記錄后進行清理,也可以隨時用delete_all替換destroy_all

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM