我不知道为什么我遇到一些如此简单的问题,但这个条件陈述是行不通的。
@battalion = Battalion.find(params[:id])
@soldier = @battalion.soldiers(:conditions => ["seniorleader = ?", "No"])
这显示了士兵阵列,但没有反映我设定的条件。
我确信我做的事情非常简单,但我似乎无法弄清楚它是什么。
非常感谢任何帮助。
答案 0 :(得分:3)
根据你在第二行中的语法,你将条件作为士兵的属性传递,而不是实际上削减你的列表。你可以尝试:
@soldier = @battalion.soldiers.find(:all, :conditions => ["seniorleader = ?", "No"])
find方法可以帮助你对你的士兵进行排序,我还建议你在第一行做一些急切的装载,
@battalion = Battalion.find(params[:id], :include => "soldiers")
所以@battalion对象已经拥有所有士兵信息,并且不需要对第二行进行单独的SQL查询。希望这会有所帮助。