2013-04-19 3 views
0

Это подсчитывает количество пользователей, чьи уведомления Кодекса является 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 для логического удаления. С этой строкой выше указаны удаленные записи, которые имеют дату и время в 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

Это выглядит хорошо! Вы тестировали его в консоли? – AlexBrand

ответ

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 
+0

Спасибо. Я попробовал вашу область действия, но он возвратил то же число, что и раньше. Очевидно, он должен быть уменьшен, хотя :( – cat

+0

Каков счет всех записей и что такое подсчет области? В консоли: 'User.all.count' vs' User.not_deleted.count' – AlexBrand

+0

User.all.count Пользовательская загрузка (1.6ms) SELECT 'users'. * FROM' users' WHERE ('users'. 'deleted_at' IS NULL) => 11 – cat

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 

SQL, порождена Rails использует множественное имя таблицы (users) вместо имени особой модели (user).

+0

Спасибо, я попробовал это, но он вернул 0 :( – cat