2009-10-18 2 views
0

Я понятия не имею, почему у меня возникают проблемы с чем-то таким простым, но это условие не просто работает.Rails Условие Заявление Выпуск

@battalion = Battalion.find(params[:id]) 
@soldier = @battalion.soldiers(:conditions => ["seniorleader = ?", "No"]) 

Это показывает массив Солдат, но не отражает условие, которое я установил.

Я уверен, что делаю что-то очень простое, но я не могу понять, что это такое.

Любая помощь была бы принята с благодарностью.

ответ

3

Основываясь на синтаксисе, который у вас есть в строке два, вы проходите в условиях как собственности солдат, а не на самом деле разбираете свой список. Вы можете попробовать:

@soldier = @battalion.soldiers.find(:all, :conditions => ["seniorleader = ?", "No"]) 

Метод находка поможет вам разобраться в ваших солдат, я также рекомендовал бы вам сделать некоторые жадной загрузки на вашей первой линии,

@battalion = Battalion.find(params[:id], :include => "soldiers") 

Так объект @battalion будет уже имеют всю информацию о солдатах и ​​не потребуют отдельного запроса sql для второй строки. Надеюсь это поможет.

+0

Большое спасибо, что это решило. Я знал, что это просто глупо. Цените свое время. – 2009-10-18 22:19:17

+0

Нет, проблема ... это было сделано. Если бы вы этого захотели, вы могли бы сделать все это в одной строке, посмотрите на эти рельсы, у которых есть дополнительная информация http://railscasts.com/episodes/181-include-vs-joins. – Schneems