Не Null в функции «считать» или «найти» в рельсах - PullRequest
2 голосов
/ 15 октября 2010

Я пытаюсь найти ненулевые элементы в базе данных

@genus_counts = Table.count(:all, :conditions=> {:col1 => params[:gm], :col2 => nil}, :without => {:col3 => nil})

Не распознается функция "без".Я сомневаюсь, чтобы применить его в качестве значения массива.

@genus_counts = Table.count(:all, :conditions=> {:col1 => params[:gm], :col3 != nil :col2 => nil})

Он не распознает оператор "! =" .... Пожалуйста, предложите мне и исправьте приведенное выше утверждение.Я сомневаюсь, чтобы применить его в качестве значения массива.

@genus_counts является локальной переменной, я не могу применить его в качестве массива.Пожалуйста, скажите мне предложение перенести этот вывод на view.erb.html

- С уважением, Палани Каннан.K

Ответы [ 3 ]

7 голосов
/ 15 октября 2010

Вы должны сделать что-то вроде (как ответили ранее) (внутри вашего контроллера):

@genus_count = Table.count(:all, :conditions => ['col3 is not null and col2 is null and col1 = ?', params[:gm])

, тогда @genus_count будет содержать желаемое количество.Так как @genus_count является переменной экземпляра вашего контроллера, вы можете просто ссылаться на нее в своем представлении следующим образом:

The wanted count = <%= @genus_count %>

Надеюсь, это поможет!

0 голосов
/ 16 октября 2010

Формат хэша, указывающий условия, такие как :conditions=> {:col1 => params[:gm], :col2 => nil}, может использоваться только для указания условий, в которых все = объединены с AND.

Приятно читать, поэтому используйте этот формат, когда это применимо, но когда вам нужен OR или компаратор, отличный от =, вам нужно будет использовать немного другой формат:

:conditions => ["col1 = ? AND col3 != ? AND col2 = ?", params[:gm], nil, nil]

Этот формат принимает массив, первый элемент которого является фрагментом sql, а остальные параметры очищаются sql (предотвращая атаку внедрения sql, преобразуя nil в 'NULL' и т. Д.) И вставляются во фрагмент sql, заменяя ? (в порядке появления).

0 голосов
/ 15 октября 2010

как в

http://guides.rubyonrails.org/active_record_querying.html#conditions

вы можете использовать что-то похожее на эту форму вместо:

"orders_count = ? AND locked = ?", params[:orders], false

, поэтому вы можете использовать

"   ... col3 IS NOT null ... "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...