3

コントローラーにこれがあります:

class User::ResourcesController < User::UserController
  def index
     @resource_type = ResourceType.find_by_name(params[:resource_type].to_s.titleize)
     @products = @products.includes(:resources).where(:resources => { :resource_type_id => @resource_type.id })

     respond_to do |format|
       format.html # index.html.erb
       format.xml  { render :xml => @resources }
     end
  end
end

リソースをフィルタリングしようとしているので、私の見解では、以下のコードを使用して、正しい resource_type_id を持つリソースのみをプルすることができます。

@products.each do |product|
  product.resources.count
end
4

2 に答える 2

3
@products = Product.includes(:resources).where("resources.resource_type_id = ?", @resource_type.id)
于 2011-03-31T03:30:14.650 に答える
1

次のようなことを試してください:

@products = Product.includes(:resources).where(resources: { 
  resource_type_id: @resource_type.id 
})

最も安全で読みやすいです。

于 2014-10-14T17:59:58.927 に答える