这会计算代码通知为true
且其个人资料的notification
为true
@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
答案 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
)。