我使用2连接模型Rails的渲染内蒙古XML JOIN
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文件中只显示产品模型的列。我尝试更改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>
THX!
JSON格式呢?我想创建一个通用的@variable,可以转换为任何格式 - XML,JSON – xpepermint 2009-12-29 09:19:50
如何从两个表格访问信息。我看到的唯一方法是使用AS - SELECT products.id AS product_id ... – xpepermint 2009-12-29 11:01:12