我做了一个事务,计算了current_user社区拥有的成员数量,以及每个社区拥有多少成员。
如果其他注册用户按下特定社区的“加入” 用户将成为社区的成员,社区的所有者获得1分。
当然,当用户按下社区中的“退出”时,它会采取相反的行动。
我这样编码,到目前为止工作正常 但是,我发现只有一个社区不接受此交易 实际上,它会切换标志但没有这些计算和计数事务。 所以Point的数量和成员数量不会改变:( 它几乎看起来像是锁定了!
为什么会这样?只有一个记录!!
if current_user.voted_up_on? @community
current_user.dislikes @community
#Calculate the points of the community's owner
if @community.user
@user = User.find(@community.user_id)
@user.profile.total_point = Community.sum(:cached_votes_up, :conditions => ["user_id = ?", @user]) + @user.profile.bonus_point
@user.profile.next_level = next_level_set(@user)
@user.save
end
#count how many members the community has.
@users = User.where(:id => @community.likes.map(&:voter_id))
@community.cached_votes_up = @users.count
@community.save
else
current_user.likes @community
#Calculate the points of the community's owner
if @community.user
@user = User.find(@community.user_id)
@user.profile.total_point = Community.sum(:cached_votes_up, :conditions => ["user_id = ?", @user]) + @user.profile.bonus_point
@user.profile.next_level = next_level_set(@user)
@user.save
end
#count how many members the community has.
@users = User.where(:id => @community.likes.map(&:voter_id))
@community.cached_votes_up = @users.count
@community.save
end
答案 0 :(得分:2)
我猜你试图在save
上调用@community
但由于某种原因无法保存,可能是验证错误。我建议您检查@community.save
的结果,如果是false
,请检查@community.errors
是否有验证错误。另请参阅主题的Rails Guide。