我不知道为什么我对这么简单的事情有问题,但是这个条件语句不起作用。
@battalion = Battalion.find(params[:id])
@soldier = @battalion.soldiers(:conditions => ["seniorleader = ?", "No"])
这显示了士兵的阵列,但不反映我设置的条件。
我确定我在做一些非常简单的错误,但我似乎无法弄清楚它是什么。
任何帮助将不胜感激。
我不知道为什么我对这么简单的事情有问题,但是这个条件语句不起作用。
@battalion = Battalion.find(params[:id])
@soldier = @battalion.soldiers(:conditions => ["seniorleader = ?", "No"])
这显示了士兵的阵列,但不反映我设置的条件。
我确定我在做一些非常简单的错误,但我似乎无法弄清楚它是什么。
任何帮助将不胜感激。
根据您在第二行中的语法,您将条件作为士兵的属性传递,而不是实际上缩减您的列表。你可以试试:
@soldier = @battalion.soldiers.find(:all, :conditions => ["seniorleader = ?", "No"])
find 方法将帮助您对士兵进行分类,我还建议您在第一行进行一些急切的加载,
@battalion = Battalion.find(params[:id], :include => "soldiers")
所以@battalion 对象将已经拥有所有士兵信息,并且不需要对第二行进行单独的 sql 查询。希望这可以帮助。