我正在使用 2 个连接模型
class Product < ActiveRecord::Base
has_and_belongs_to_many :providers
end
class Provider < ActiveRecord::Base
has_and_belongs_to_many :products
end
我的控制器看起来像这样
class ProductsController < ApplicationController
@products = Product.find(
:all,
:joins => :providers,
:select => "providers.id, providers.title, products.id, products.title, products.price",
:limit => 10)
respond_to do |format|
format.xml { render :xml => @products }
format.json { render :json => @products }
end
end
end
@products 未按预期呈现。XML 文件中仅显示 Product 模型的列。我尝试将 format.xml 行更改为
format.xml { render :xml => @products.to_xml( :include => :providers) }
但这不是我想要的。您可以将我的 SQL 查询设为 5 列
SELECT providers.id, providers.title, products.id, products.title, products.price
FROM `products`
INNER JOIN `products_providers` ON `products_providers`.product_id = `products`.id
INNER JOIN `providers` ON `providers`.id = `products_providers`.provider_id
LIMIT 10
但在我的 XML 中只显示了 3 个。to_xml 方法还会生成一些外部 SQL 请求,我不希望这样。
有人可以向我提供有关如何告诉 rails 呈现我的所有 SQL 字段的信息吗?我也希望代码得到优化。
理想的 XML/JSON 设计应该是
<products type="array">
<product>
<id type="integer">1</id>
<price type="decimal">9.99</price>
<title type="string">Sanke Rolex</title>
<provider>
<id type="string">1</id>
<title type="string"></title>
</provider>
</product>
</products>
谢谢!