0

我不知道为什么我对这么简单的事情有问题,但是这个条件语句不起作用。

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

这显示了士兵的阵列,但不反映我设置的条件。

我确定我在做一些非常简单的错误,但我似乎无法弄清楚它是什么。

任何帮助将不胜感激。

4

1 回答 1

3

根据您在第二行中的语法,您将条件作为士兵的属性传递,而不是实际上缩减您的列表。你可以试试:

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

find 方法将帮助您对士兵进行分类,我还建议您在第一行进行一些急切的加载,

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

所以@battalion 对象将已经拥有所有士兵信息,并且不需要对第二行进行单独的 sql 查询。希望这可以帮助。

于 2009-10-18T18:45:36.557 回答