如何为此添加额外条件?

时间:2013-04-19 16:09:32

标签: ruby-on-rails ruby-on-rails-3

这会计算代码通知为true且其个人资料的notificationtrue

的用户数量
@count = User.joins(:profile, :codes => :community).where("profiles.notification=? AND codes.notification=? AND communities.id=?", true, true, @community.id).count

我正在使用名为acts_as_paranoid的gem进行逻辑删除。 有了这个,上面的行包括已删除的记录,其日期时间为user.deleted_at

我想将这些已删除的记录排除在外 如何将这个额外条件添加到上面?

这样的事情?

@count = User.joins(:profile, :codes => :community).where("user.deleted_at=? AND profiles.notification=? AND codes.notification=? AND communities.id=?", nil, true, true, @community.id).count

2 个答案:

答案 0 :(得分:2)

您也可以尝试在模型上使用示波器:

class User < ActiveRecord::Base
    scope :not_deleted, where(:deleted_at => nil)
end

然后执行:(注意User.not_deleted.joins...

@count = User.not_deleted.joins(:profile, :codes => :community).where("profiles.notification=? AND codes.notification=? AND communities.id=?", true, true, @community.id).count

答案 1 :(得分:1)

我认为合适,但user.deleted_at应为users.deleted_at

- @count = User.joins(:profile, :codes => :community).where("user.deleted_at=? AND profiles.notification=? AND codes.notification=? AND communities.id=?", nil, true, true, @community.id).count
+ @count = User.joins(:profile, :codes => :community).where("users.deleted_at=? AND profiles.notification=? AND codes.notification=? AND communities.id=?", nil, true, true, @community.id).count

Rails生成的SQL使用复数表名(users)而不是单数模型名称(user)。