我在控制器中有以下方法:
# GET /units/1
def show
@unit = Unit.find(params[:id]
@product_instances = Array.new
current_user.product_instances.each do |product_instance|
if product_instance.product.unit == @unit
@product_instances.push(product_instance)
end
end
... #rest of method
end
可以看出,我有四个表/模型:User、Product、ProductInstance 和 Unit。一个用户有许多 ProductInstances。每个 ProductInstance 都映射到一个 Product。一个单元有许多产品。
我只想获取与当前单元中的产品链接的用户产品实例。当前的代码可以做到,但是我怎样才能更好地重写它呢?如果可能的话,我想摆脱 for-each 循环和 if 语句,并用链式 ActiveRecord 查询替换它。
我尝试了以下类似的方法,但没有奏效:
@product_instances = current_user.product_instances.where(:product.unit => @unit)
看来你做不到:product.unit
。